IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries I5Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog I6FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit3742506337167656962/junit4138098753703445045/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png IAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog IFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png IException in thread "DefaultDispatcher-worker-1 @coroutine#3" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed I at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) I at kotlinx.coroutines.channels.BufferedChannel.receive$suspendImpl(BufferedChannel.kt:678) I at kotlinx.coroutines.channels.BufferedChannel.receive(BufferedChannel.kt) I at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) I at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) I Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(3), "coroutine#3":StandaloneCoroutine{Cancelling}@1d4c987f, Dispatchers.IO] ICaused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed I at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) I at kotlinx.coroutines.channels.BufferedChannel.receive$suspendImpl(BufferedChannel.kt:678) I at kotlinx.coroutines.channels.BufferedChannel.receive(BufferedChannel.kt) I at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) I at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) I at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34) I at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) I at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124) I at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89) I at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) I at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798) I at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) I at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704) J"Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog J"FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries J#Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog J#FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/blank.txt to /tmp/junit14830081162460019074/junit18262462349778888096/tmpWork/1.tmp (integrity=sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=) JQAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JRFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries JRAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JRINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/blank.txt JSAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JSFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/blank.txt JUException in thread "DefaultDispatcher-worker-5 @coroutine#27" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed JU at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) JU at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) JU at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) JU Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(27), "coroutine#27":StandaloneCoroutine{Cancelling}@56d71c, Dispatchers.IO] JUCaused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed JU at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) JU at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) JV at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) JV at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) JV at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) JV at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) JV at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) JV at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) JV at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) JV at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) JV at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) JV at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) JV at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) JV at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) JV at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) JV at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) JV at com.ustadmobile.libcache.UstadCacheJvmTest.givenEmptyFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHit(UstadCacheJvmTest.kt:363) JV at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) JV at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) JV at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) JV at java.base/java.lang.reflect.Method.invoke(Method.java:569) JV at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) JV at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) JV at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) JV at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) JV at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) JV at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) JV at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) JV at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) JV at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) JV at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) JV at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) JV at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) JV at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) JV at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) JV at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) JW at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) JW at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) JW at org.junit.runners.ParentRunner.run(ParentRunner.java:413) JW at org.junit.runner.JUnitCore.run(JUnitCore.java:137) JW at org.junit.runner.JUnitCore.run(JUnitCore.java:115) JW at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) JW at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) JW at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) JW at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) JW at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) JW at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) JW at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) JW at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) JW at java.base/java.lang.reflect.Method.invoke(Method.java:569) JW at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) JW at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) JW at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) JW at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) JX at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) JX at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) JX at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) JX at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) JX at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) JX at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) JX at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) JX at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) JX at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) JX at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) JX at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit236286559394035262/junit17798852323503959729/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINEST: [VERBOSE] UstadCache - UstadCache(): add retention locks for http://www.server.com/file.png JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINE: [DEBUG] UstadCache - UstadCache(): moveToNewPath (http://www.server.com/file.png) /tmp/junit236286559394035262/junit17798852323503959729/cache/e5c257ee-031b-438c-84ea-4a4a8bd0021c -> /tmp/junit236286559394035262/junit17798852323503959729/persistent/e5c257ee-031b-438c-84ea-4a4a8bd0021c JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries JAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog JFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit1670580988189814749/junit13082507759221020602/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) KAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries KAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png KAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png K Exception in thread "DefaultDispatcher-worker-5 @coroutine#51" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed K  at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) K  at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) K  at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) K  Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(51), "coroutine#51":StandaloneCoroutine{Cancelling}@35768ea4, Dispatchers.IO] K Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed K  at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) K  at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) K  at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) K  at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) K  at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) K  at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) K  at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) K  at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) K  at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) K  at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) K  at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) K  at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) K! at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) K! at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) K! at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) K! at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) K! at com.ustadmobile.libcache.UstadCacheJvmTest.givenNonCompressableFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndNotCompressed(UstadCacheJvmTest.kt:275) K! at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) K! at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) K! at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) K! at java.base/java.lang.reflect.Method.invoke(Method.java:569) K! at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) K! at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) K! at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) K! at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) K! at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) K! at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) K! at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) K! at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) K! at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) K! at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) K! at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) K! at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) K! at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) K! at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) K! at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) K! at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) K" at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) K" at org.junit.runners.ParentRunner.run(ParentRunner.java:413) K" at org.junit.runner.JUnitCore.run(JUnitCore.java:137) K" at org.junit.runner.JUnitCore.run(JUnitCore.java:115) K" at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) K" at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) K" at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) K" at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) K" at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) K" at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) K" at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) K" at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) K" at java.base/java.lang.reflect.Method.invoke(Method.java:569) K" at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) K" at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) K" at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) K" at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) K" at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) K" at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) K" at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) K" at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) K" at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) K" at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) K" at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) K" at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) K" at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) K" at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) K" at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) K>Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog K>FINEST: [VERBOSE] UstadCache - UstadCache(): add retention locks for http://www.server.com/file.png KfAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KfFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries KgAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KhFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit1145052648606681049/junit18186172906797271828/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) KiAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KiFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries KiAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KiINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png KjAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KjFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png KpAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KqFINEST: [VERBOSE] UstadCache - UstadCache(): remove retention locks for #1787151403839http://www.server.com/file.png KrAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KrFINE: [DEBUG] UstadCache - UstadCache(): moveToNewPath (http://www.server.com/file.png) /tmp/junit1145052648606681049/junit18186172906797271828/persistent/89ce4bec-f72b-45ed-8f11-145c1dea2e39 -> /tmp/junit1145052648606681049/junit18186172906797271828/cache/89ce4bec-f72b-45ed-8f11-145c1dea2e39 KAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries KAug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog KFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/ustadmobile-epub.js to /tmp/junit12779500908694709199/junit612605726945770691/tmpWork/1.tmp (integrity=sha256-VSq6jc4LzKolTOOJz3m0EyOgcFjLiWDjIhq5d2YB7fM=) KAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog KFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries KAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog KINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/ustadmobile-epub.js KAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog KFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/ustadmobile-epub.js KException in thread "DefaultDispatcher-worker-3 @coroutine#85" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed K at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) K at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) K at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) K Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(85), "coroutine#85":StandaloneCoroutine{Cancelling}@47b76383, Dispatchers.IO] KCaused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed K at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) K at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) K at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) K at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) K at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) K at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) K at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) K at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) K at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) K at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) K at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) K at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) K at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) K at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) K at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) K at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) K at com.ustadmobile.libcache.UstadCacheJvmTest.givenCompressableFileStored_whenRequestMadeWithoutAcceptEncoding_thenWillBeRetrievedAsCacheHitAndBeCompressed(UstadCacheJvmTest.kt:353) K at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) K at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) K at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) K at java.base/java.lang.reflect.Method.invoke(Method.java:569) K at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) K at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) K at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) K at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) K at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) K at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) K at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) K at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) K at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) K at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) K at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) K at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) K at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) K at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) K at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) K at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) K at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) K at org.junit.runners.ParentRunner.run(ParentRunner.java:413) K at org.junit.runner.JUnitCore.run(JUnitCore.java:137) K at org.junit.runner.JUnitCore.run(JUnitCore.java:115) K at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) K at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) K at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) K at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) K at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) K at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) K at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) K at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) K at java.base/java.lang.reflect.Method.invoke(Method.java:569) K at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) K at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) K at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) K at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) K at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) K at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) K at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) K at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) K at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) K at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) K at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) K at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) K at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) K at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) K at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) L Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog L FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries L Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog L FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/ustadmobile-epub.js to /tmp/junit238291194359237013/junit9748681288703739425/tmpWork/1.tmp (integrity=sha256-VSq6jc4LzKolTOOJz3m0EyOgcFjLiWDjIhq5d2YB7fM=) L0Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog L0FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries L1Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog L1INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/ustadmobile-epub.js L1Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog L1FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/ustadmobile-epub.js L3Exception in thread "DefaultDispatcher-worker-3 @coroutine#94" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed L3 at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) L3 at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) L3 at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) L3 Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(94), "coroutine#94":StandaloneCoroutine{Cancelling}@482b452c, Dispatchers.IO] L3Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed L3 at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) L3 at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) L3 at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) L3 at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) L3 at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) L3 at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) L3 at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) L3 at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) L3 at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) L3 at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) L3 at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) L3 at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) L3 at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) L3 at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) L3 at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) L3 at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) L4 at com.ustadmobile.libcache.UstadCacheJvmTest.givenCompressableFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndBeCompressed(UstadCacheJvmTest.kt:342) L4 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) L4 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) L4 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) L4 at java.base/java.lang.reflect.Method.invoke(Method.java:569) L4 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) L4 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) L4 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) L4 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) L4 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) L4 at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) L4 at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) L4 at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) L4 at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) L4 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) L4 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) L4 at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) L4 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) L4 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) L4 at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) L4 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) L4 at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) L4 at org.junit.runners.ParentRunner.run(ParentRunner.java:413) L4 at org.junit.runner.JUnitCore.run(JUnitCore.java:137) L4 at org.junit.runner.JUnitCore.run(JUnitCore.java:115) L4 at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) L4 at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) L4 at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) L4 at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) L4 at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) L4 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) L4 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) L4 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) L4 at java.base/java.lang.reflect.Method.invoke(Method.java:569) L4 at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) L4 at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) L4 at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) L4 at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) L4 at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) L4 at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) L4 at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) L4 at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) L4 at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) L4 at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) L4 at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) L4 at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) L4 at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) L4 at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) L5 at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) LQAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LQFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries LRAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LRFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit2135920741166234215/junit6464581135856895627/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png LException in thread "DefaultDispatcher-worker-4 @coroutine#103" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed L at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) L at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) L at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) L Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(103), "coroutine#103":StandaloneCoroutine{Cancelling}@4d22d1dc, Dispatchers.IO] LCaused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed L at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) L at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) L at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) L at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) L at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) L at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) L at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) L at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) L at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) L at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) L at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) L at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) L at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) L at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) L at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) L at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) L at com.ustadmobile.libcache.UstadCacheJvmTest.givenFileCachedAndStored_whenPartialRequestMadeIfRangeNotMatched_thenWillReceiveFullResponse(UstadCacheJvmTest.kt:517) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) L at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) L at java.base/java.lang.reflect.Method.invoke(Method.java:569) L at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) L at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) L at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) L at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) L at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) L at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) L at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) L at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) L at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) L at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) L at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) L at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) L at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) L at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) L at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) L at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) L at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) L at org.junit.runners.ParentRunner.run(ParentRunner.java:413) L at org.junit.runner.JUnitCore.run(JUnitCore.java:137) L at org.junit.runner.JUnitCore.run(JUnitCore.java:115) L at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) L at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) L at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) L at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) L at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) L at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) L at java.base/java.lang.reflect.Method.invoke(Method.java:569) L at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) L at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) L at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) L at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) L at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) L at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) L at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) L at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) L at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) L at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) L at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) L at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) L at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) L at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) L at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINEST: [VERBOSE] UstadCache - UstadCache(): add retention locks for http://www.server.com/file.png LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit5543958950379571214/junit16674073312782150134/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png LAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog LFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png LException in thread "DefaultDispatcher-worker-7 @coroutine#114" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed L at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) L at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) L at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) L Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(114), "coroutine#114":StandaloneCoroutine{Cancelling}@3b0d2c75, Dispatchers.IO] LCaused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed L at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) L at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) L at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) L at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) L at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) L at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) L at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) L at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) L at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) L at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) L at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) L at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) L at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) L at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) L at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) L at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) L at com.ustadmobile.libcache.UstadCacheJvmTest.givenLockedEntryStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndSavedInPersistentPath(UstadCacheJvmTest.kt:285) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) L at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) L at java.base/java.lang.reflect.Method.invoke(Method.java:569) L at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) L at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) L at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) L at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) L at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) L at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) L at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) L at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) L at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) L at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) L at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) L at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) L at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) L at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) L at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) L at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) L at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) L at org.junit.runners.ParentRunner.run(ParentRunner.java:413) L at org.junit.runner.JUnitCore.run(JUnitCore.java:137) L at org.junit.runner.JUnitCore.run(JUnitCore.java:115) L at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) L at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) L at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) L at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) L at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) L at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) L at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) L at java.base/java.lang.reflect.Method.invoke(Method.java:569) L at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) L at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) L at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) L at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) L at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) L at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) L at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) L at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) L at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) L at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) L at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) L at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) L at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) L at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) L at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) M7Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog M7FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries M8Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog M8FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit10697562358050398908/junit16831452818051165133/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) M9Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog M9FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries M:Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog M:INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?ts=1 M;Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog M;FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?ts=1 M=Exception in thread "DefaultDispatcher-worker-2 @coroutine#125" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed M= at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) M= at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) M= at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) M= Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(125), "coroutine#125":StandaloneCoroutine{Cancelling}@4a724003, Dispatchers.IO] M=Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed M= at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) M= at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) M= at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) M= at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) M= at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) M= at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) M= at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) M= at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) M= at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) M= at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) M= at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) M= at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) M= at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) M= at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) M= at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) M= at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) M= at com.ustadmobile.libcache.UstadCacheJvmTest.givenNoVarySearchHeaderSet_whenRetrievedUsingMatchingUrl_thenIsCacheHit(UstadCacheJvmTest.kt:645) M> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) M> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) M> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) M> at java.base/java.lang.reflect.Method.invoke(Method.java:569) M> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) M> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) M> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) M> at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) M> at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) M> at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) M> at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) M> at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) M> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) M> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) M> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) M> at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) M> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) M> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) M> at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) M> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) M> at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) M> at org.junit.runners.ParentRunner.run(ParentRunner.java:413) M> at org.junit.runner.JUnitCore.run(JUnitCore.java:137) M> at org.junit.runner.JUnitCore.run(JUnitCore.java:115) M> at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) M> at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) M> at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) M> at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) M> at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) M> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) M> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) M> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) M> at java.base/java.lang.reflect.Method.invoke(Method.java:569) M> at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) M> at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) M> at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) M> at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) M> at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) M> at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) M> at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) M> at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) M> at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) M> at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) M> at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) M> at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) M> at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) M> at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) M> at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) MYAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MYINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?ts=1 M\Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog M\FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?ts=1 MpException in thread "DefaultDispatcher-worker-2 @coroutine#135" androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed Mp at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) Mp at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) Mp at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) Mp at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) Mp at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) Mp at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) Mp at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) Mp at androidx.sqlite.SQLite.execSQL(Unknown Source) Mp at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) Mp at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) Mp at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) Mp at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) Mp at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) Mp at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) Mp at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) Mp at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) Mp at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) Mp at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) Mp at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) Mp at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) Mp at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) Mp at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) Mp at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) Mp at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) Mp at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) Mp at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) Mp at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) Mp at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) Mp at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) Mp Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(135), "coroutine#135":StandaloneCoroutine{Cancelling}@6ef85949, Dispatchers.IO] MpCaused by: androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed Mp at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) Mp at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) Mp at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) Mp at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) Mp at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) Mp at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) Mp at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) Mp at androidx.sqlite.SQLite.execSQL(Unknown Source) Mp at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) Mp at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) Mp at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) Mp at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) Mp at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) Mp at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) Mp at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) Mp at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) Mp at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) Mp at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) Mp at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) Mp at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) Mp at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) Mp at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) Mp at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) Mp at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) Mp at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) Mp at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) Mp at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) Mp at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) Mp at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34) Mp at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) Mp at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124) Mp at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89) Mp at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) Mp at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798) Mp at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) Mp at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704) MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MFINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MFINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png?lang=en&lesson=2 to /tmp/junit10697562358050398908/junit16831452818051165133/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MFINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server MException in thread "DefaultDispatcher-worker-2 @coroutine#140" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed M at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) M at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) M at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) M Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(140), "coroutine#140":StandaloneCoroutine{Cancelling}@1f4232dc, Dispatchers.IO] MCaused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed M at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) M at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) M at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) M at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) M at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) M at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) M at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) M at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) M at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) M at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) M at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) M at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) M at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) M at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) M at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) M at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) M at com.ustadmobile.libcache.UstadCacheJvmTest.givenNoVarySearchHeaderSet_whenRetrievedUsingMatchingUrl_thenIsCacheHit(UstadCacheJvmTest.kt:645) M at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) M at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) M at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) M at java.base/java.lang.reflect.Method.invoke(Method.java:569) M at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) M at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) M at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) M at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) M at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) M at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) M at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) M at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) M at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) M at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) M at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) M at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) M at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) M at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) M at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) M at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) M at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) M at org.junit.runners.ParentRunner.run(ParentRunner.java:413) M at org.junit.runner.JUnitCore.run(JUnitCore.java:137) M at org.junit.runner.JUnitCore.run(JUnitCore.java:115) M at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) M at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) M at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) M at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) M at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) M at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) M at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) M at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) M at java.base/java.lang.reflect.Method.invoke(Method.java:569) M at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) M at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) M at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) M at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) M at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) M at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) M at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) M at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) M at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) M at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) M at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) M at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) M at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) M at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) M at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MINFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server MAug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog MFINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server MException in thread "DefaultDispatcher-worker-2 @coroutine#150" androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed M at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) M at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) M at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) M at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) M at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) M at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) M at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) M at androidx.sqlite.SQLite.execSQL(Unknown Source) M at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) M at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) M at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) M at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) M at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) M at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) M at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) M at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) M at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) M at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) M at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) M at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) M at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) M at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) M at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) M at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) M at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) M at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) M at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) M at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) M at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) M Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(150), "coroutine#150":StandaloneCoroutine{Cancelling}@10a12185, Dispatchers.IO] MCaused by: androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed M at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) M at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) M at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) M at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) M at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) M at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) M at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) M at androidx.sqlite.SQLite.execSQL(Unknown Source) M at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) M at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) M at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) M at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) M at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) M at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) M at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) M at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) M at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) M at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) M at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) M at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) M at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) M at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) M at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) M at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) M at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) M at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) M at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) M at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) M at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34) M at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) M at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124) M at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89) M at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) M at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798) M at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) M at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)