[ 
https://issues.apache.org/jira/browse/IGNITE-27891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Plekhanov updated IGNITE-27891:
---------------------------------------
    Ignite Flags: Release Notes Required  (was: Docs Required,Release Notes 
Required)

> Flaky MemoryQuotasIntegrationTest.testHashAggregateNode
> -------------------------------------------------------
>
>                 Key: IGNITE-27891
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27891
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Aleksey Plekhanov
>            Assignee: Aleksey Plekhanov
>            Priority: Major
>              Labels: MakeTeamcityGreenAgain, calcite, ise
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Test fails on TC with:
> {noformat}
>         java.lang.AssertionError: Count of inboxes must be 0 after test 
> [ignite=client] expected:<0> but was:<1>
> {noformat}
> Reason:
> Batch message for last query from one of the server nodes reaches the client 
> node after client already receive an error message, close inbox and proceed 
> to afterTest checks. New inbox is registered for this message and cleanup 
> task is scheduled, but by this time afterTest already passes first inbox 
> checks (with waiting) and fails on second inbox check (without waiting)
> Also, in rare cases, test fails with:
> {noformat}
> java.lang.AssertionError: Tracked memory must be 0 after test 
> [ignite=integration.MemoryQuotasIntegrationTest0] 
> Expected :0
> Actual   :-65536
> {noformat}
> IReason:
> There can be a situation, when query fragment is executed concurrently with 
> query close request. {{QueryCloseMessage}} is not {{ExecutionContextAware}}, 
> since it doesn't have the {{fragmentId}} field. So it can be executed on 
> different thread with query fragment. If {{QueryMemoryTracker.reset()}} 
> method is executed concurrently with quota exceeding 
> {{QueryMemoryTracker.onMemoryAllocated}} race is possible. When {{allocated}} 
> size is temprary incremented in {{onMemoryAllocated}}, it can be catched as 
> {{wasAllocated}} and reported to parent tracker, but {{onMemoryAllocated}} 
> not report allocated size to parent tracker due to quota exceeding.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to