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

Aleksey Plekhanov updated IGNITE-27891:
---------------------------------------
    Description: 
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.

  was:
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}
Investigation required for this case.


> 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
>
> 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