[
https://issues.apache.org/jira/browse/IGNITE-29281?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Tkalenko updated IGNITE-29281:
-------------------------------------
Attachment: QueryCleanupRaceIntegrationTest.java
> 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
> Priority: Major
> Labels: calcite, ignite-2, sql
> Attachments: QueryCleanupRaceIntegrationTest.java
>
>
> 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)