Telenav / mesakit

A toolkit for creating mapping and navigation software.
Apache License 2.0
2 stars 1 forks source link

Intermittent test failure in EdgeTest #16

Closed timboudreau closed 2 years ago

timboudreau commented 2 years ago

Description We seem to have a mesakit heisenbug - a couple of builds failed this test, while most passed: https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true

Most passed like this: https://github.com/Telenav/mesakit/runs/7375566521?check_suite_focus=true

Reproduce Case

If it were reproducible, that would be easy :-)

This failure happens occasionally in the github build action that runs on push to any of our repositories. Most succeed, some fail, all running the same code. Links above are two examples with stack trace.

Stack Trace See links

jonathanl-telenav commented 2 years ago
Error:  Errors: 
[7962](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7963)
Error:    EdgeTest.<init>:38->GraphUnitTest.<init>:125->CoreUnitTest.initializeProject:375 » IllegalState Recursive update
[7963](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7964)
[INFO] 
[7964](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7965)
Error:  Tests run: 62, Failures: 0, Errors: 1, Skipped: 2
jonathanl-telenav commented 2 years ago
Error:  Tests run: 12, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 14.433 s <<< FAILURE! - in com.telenav.mesakit.graph.tests.EdgeTest
[7671](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7672)
Error:  com.telenav.mesakit.graph.tests.EdgeTest.testFork  Time elapsed: 0.846 s  <<< ERROR!
[7672](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7673)
java.lang.IllegalStateException: Recursive update
[7673](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7674)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1742)
[7674](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7675)
    at kivakit.core@1.6.3-SNAPSHOT/com.telenav.kivakit.core.object.LazyMap.get(LazyMap.java:84)
[7675](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7676)
    at kivakit.core@1.6.3-SNAPSHOT/com.telenav.kivakit.core.project.Project.resolveProject(Project.java:105)
[7676](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7677)
    at kivakit.internal.testing@1.6.3-SNAPSHOT/com.telenav.kivakit.internal.testing.CoreUnitTest.initializeProject(CoreUnitTest.java:375)
[7677](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7678)
    at mesakit.internal.graph.core.testing@0.9.17-SNAPSHOT/com.telenav.mesakit.graph.core.testing.GraphUnitTest.<init>(GraphUnitTest.java:125)
[7678](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7679)
    at mesakit.internal.graph.core.unit.tests@0.9.17-SNAPSHOT/com.telenav.mesakit.graph.tests.EdgeTest.<init>(EdgeTest.java:38)
[7679](https://github.com/Telenav/kivakit/runs/7375297562?check_suite_focus=true#step:23:7680)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
jonathanl-telenav commented 2 years ago

from the stack trace, there is not a recursive update going on. so, most likely ConcurrentHashMap is incorrectly detecting this. based on that, I synchronized Project.resolveProject(), which may fix the bug.

jonathanl-telenav commented 2 years ago

since I cannot reproduce this bug, assigning to Tim to check it

timboudreau commented 2 years ago

Going to close this. If it is still a problem, it will show up randomly when the workflow runs and we can reopen.