[ 
https://issues.apache.org/jira/browse/IGNITE-23858?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17908881#comment-17908881
 ] 

Roman Puchkovskiy commented on IGNITE-23858:
--------------------------------------------

[~daniellahubble] thank you for your report. Could you please share a patch or 
a branch demonstrating how exactly you configured the project to use NonDex?

> FreeListImplTest#testMultiThread is flaky
> -----------------------------------------
>
>                 Key: IGNITE-23858
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23858
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Daniella Hubble
>            Priority: Minor
>              Labels: ignite-3
>   Original Estimate: 10m
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The `FreeListImplTest#testMultiThread` test intermittently fails due to 
> non-deterministic behavior. The issue was identified using 
> [NonDex|[https://github.com/TestingResearchIllinois/NonDex] ], a tool 
> designed to detect flaky tests by introducing non-deterministic order in the 
> execution of methods that rely on unordered collections or concurrency. 
> To reproduce:
> 1) Set up NonDex for the project.
> 2) Run the following command './gradlew :ignite-page-memory:nondexTest 
> --tests=FreeListImplTest.testMultiThread'
> 3) Observe the intermittent test failure:
> {code:java}
> > Task :ignite-page-memory:nondexTestFreeListImplTest > testMultiThread(int, 
> > boolean) > [1] 1024, true FAILED
>     java.util.concurrent.TimeoutException at FreeListImplTest.java:116
>  {code}
> The flaky behavior appears to be caused by the nondeterministic nature of 
> 'ConcurrentHashMap'. Since thread execution order can vary, this may lead to 
> inconsistent states, causing the test to hang or time out.
>  
> Fix:
> When the 'ConcurrentHashMap' is replaced with a 'ConcurrentSkipListMap', the 
> test consistently passes in both normal execution (using command: './gradlew 
> :ignite-page-memory:test --tests=FreeListImplTest.testMultiThread') and under 
> NonDex testing (using command: './gradlew :ignite-page-memory:nondexTest 
> --tests=FreeListImplTest.testMultiThread'). This is because 
> 'ConcurrentSkipListMap' maintains a predictable order for elements, reducing 
> the potential for inconsistent states in concurrent operations.



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

Reply via email to