realm / realm-kotlin

Kotlin Multiplatform and Android SDK for the Realm Mobile Database: Build Better Apps Faster.
Apache License 2.0
889 stars 52 forks source link

[GHA] Flaky Sync test: cleanupAllRealmThreadsOnClose #1627

Open cmelchior opened 5 months ago

cmelchior commented 5 months ago

This one fails on Ubuntu with this trace

io.realm.kotlin.test.mongodb.jvm.RealmTests[jvm] > cleanupAllRealmThreadsOnClose[jvm] FAILED
    java.lang.AssertionError: Active threads where found ([Thread[Thread-767,5,main], Thread[Thread-720,5,main], Thread[Thread-589,5,main], Thread[Thread-763,5,main], Thread[Thread-733,5,main], Thread[Thread-762,5,main], Thread[Thread-771,5,main], Thread[Thread-730,5,main], Thread[Thread-764,5,main], Thread[Thread-782,5,main], Thread[Thread-765,5,main], Thread[Thread-591,5,main], Thread[Thread-33,5,main], Thread[Thread-779,5,main], Thread[Thread-785,5,main], Thread[Thread-732,5,main], Thread[Thread-769,5,main], Thread[Thread-595,5,main], Thread[Thread-770,5,main], Thread[Thread-778,5,main], Thread[Thread-766,5,main], Thread[Thread-775,5,main], Thread[Thread-768,5,main], Thread[Thread-719,5,main], Thread[Thread-729,5,main], Thread[Thread-723,5,main], Thread[Thread-722,5,main], Thread[Thread-781,5,main], Thread[Thread-780,5,main], Thread[Thread-784,5,main], Thread[Thread-728,5,main], Thread[Thread-32,5,main], Thread[Thread-593,5,main], Thread[Thread-590,5,main], Thread[Thread-596,5,main], Thread[Thread-721,5,main], Thread[Thread-592,5,main], Thread[Thread-724,5,main]].size): --------------------------------
    Thread-32 - Is Daemon false - Is Alive true
    Thread-33 - Is Daemon false - Is Alive true
    Thread-589 - Is Daemon false - Is Alive true
    Thread-590 - Is Daemon false - Is Alive true
    Thread-591 - Is Daemon false - Is Alive true
    Thread-592 - Is Daemon false - Is Alive true
    Thread-593 - Is Daemon false - Is Alive true
    Thread-595 - Is Daemon false - Is Alive true
    Thread-596 - Is Daemon false - Is Alive true
    Thread-719 - Is Daemon false - Is Alive true
    Thread-720 - Is Daemon false - Is Alive true
    Thread-721 - Is Daemon false - Is Alive true
    Thread-722 - Is Daemon false - Is Alive true
    Thread-723 - Is Daemon false - Is Alive true
    Thread-724 - Is Daemon false - Is Alive true
    Thread-728 - Is Daemon false - Is Alive true
    Thread-729 - Is Daemon false - Is Alive true
    Thread-730 - Is Daemon false - Is Alive true
    Thread-732 - Is Daemon false - Is Alive true
    Thread-733 - Is Daemon false - Is Alive true
    Thread-762 - Is Daemon false - Is Alive true
    Thread-763 - Is Daemon false - Is Alive true
    Thread-764 - Is Daemon false - Is Alive true
    Thread-765 - Is Daemon false - Is Alive true
    Thread-766 - Is Daemon false - Is Alive true
    Thread-767 - Is Daemon false - Is Alive true
    Thread-768 - Is Daemon false - Is Alive true
    Thread-769 - Is Daemon false - Is Alive true
    Thread-770 - Is Daemon false - Is Alive true
    Thread-771 - Is Daemon false - Is Alive true
    Thread-775 - Is Daemon false - Is Alive true
    Thread-778 - Is Daemon false - Is Alive true
    Thread-779 - Is Daemon false - Is Alive true
    Thread-780 - Is Daemon false - Is Alive true
    Thread-781 - Is Daemon false - Is Alive true
    Thread-782 - Is Daemon false - Is Alive true
    Thread-784 - Is Daemon false - Is Alive true
    Thread-785 - Is Daemon false - Is Alive true
    All threads: 38
    Active threads: 55
     expected:<0> but was:<38>
        at org.junit.Assert.fail(Assert.java:89)
        at org.junit.Assert.failNotEquals(Assert.java:835)
        at org.junit.Assert.assertEquals(Assert.java:120)
        at kotlin.test.junit.JUnitAsserter.assertEquals(JUnitSupport.kt:32)
        at kotlin.test.AssertionsKt__AssertionsKt.assertEquals(Assertions.kt:63)
        at kotlin.test.AssertionsKt.assertEquals(Unknown Source)
        at io.realm.kotlin.test.mongodb.jvm.RealmTests$cleanupAllRealmThreadsOnClose$1.invokeSuspend(RealmTests.kt:70)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at io.realm.kotlin.test.mongodb.jvm.RealmTests.cleanupAllRealmThreadsOnClose(RealmTests.kt:40)

It is a bit unclear why so many threads are being spawned. It does not reproduce on Mac. We need to investigate.

Test: https://github.com/realm/realm-kotlin/actions/runs/7488403587/job/20383083030