Kirill Tkalenko created IGNITE-29281:
----------------------------------------

             Summary: SQL Calcite: Query cleanup race
                 Key: IGNITE-29281
                 URL: https://issues.apache.org/jira/browse/IGNITE-29281
             Project: Ignite
          Issue Type: Improvement
    Affects Versions: 2.18, 2.19
            Reporter: Kirill Tkalenko
            Assignee: Kirill Tkalenko


A race between query failure handling and {{QueryStartResponse}} processing can 
leave a failed query registered on a remote node.

After a DELETE fails, {{CalciteQueryProcessor.processQuery()}} unregisters the 
client’s {{RootQuery}} while it is still {{CLOSING}} and waiting for a fragment 
start response. The response handler then cannot find the query, so cleanup 
does not complete and {{QueryCloseMessage}} is never sent.

Besides test cleanup failures, this may retain query objects and execution 
resources, increase memory usage after repeated failures, and leave stale 
entries in query monitoring.

The race was observed without artificial delays while running in a container 
with two CPUs available on relatively low-powered hardware. I have not 
explicitly observed it on TeamCity. The attached synthetic reproducer delays 
{{QueryStartResponse}} until a DELETE fails, then releases it and checks 
cleanup. It fails before the fix and passes afterward.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to