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