/tmp/junit236286559394035262/junit17798852323503959729/persistent/e5c257ee-031b-438c-84ea-4a4a8bd0021c Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit1670580988189814749/junit13082507759221020602/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png Exception in thread "DefaultDispatcher-worker-5 @coroutine#51" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(51), "coroutine#51":StandaloneCoroutine{Cancelling}@35768ea4, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenNonCompressableFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndNotCompressed(UstadCacheJvmTest.kt:275) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): add retention locks for http://www.server.com/file.png Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit1145052648606681049/junit18186172906797271828/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): remove retention locks for #1787151403839http://www.server.com/file.png Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINE: [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 Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:43 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/ustadmobile-epub.js to /tmp/junit12779500908694709199/junit612605726945770691/tmpWork/1.tmp (integrity=sha256-VSq6jc4LzKolTOOJz3m0EyOgcFjLiWDjIhq5d2YB7fM=) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/ustadmobile-epub.js Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/ustadmobile-epub.js Exception in thread "DefaultDispatcher-worker-3 @coroutine#85" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(85), "coroutine#85":StandaloneCoroutine{Cancelling}@47b76383, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenCompressableFileStored_whenRequestMadeWithoutAcceptEncoding_thenWillBeRetrievedAsCacheHitAndBeCompressed(UstadCacheJvmTest.kt:353) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog 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=) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/ustadmobile-epub.js Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/ustadmobile-epub.js Exception in thread "DefaultDispatcher-worker-3 @coroutine#94" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(94), "coroutine#94":StandaloneCoroutine{Cancelling}@482b452c, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenCompressableFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndBeCompressed(UstadCacheJvmTest.kt:342) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit2135920741166234215/junit6464581135856895627/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png Exception in thread "DefaultDispatcher-worker-4 @coroutine#103" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(103), "coroutine#103":StandaloneCoroutine{Cancelling}@4d22d1dc, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenFileCachedAndStored_whenPartialRequestMadeIfRangeNotMatched_thenWillReceiveFullResponse(UstadCacheJvmTest.kt:517) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): add retention locks for http://www.server.com/file.png Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit5543958950379571214/junit16674073312782150134/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png Exception in thread "DefaultDispatcher-worker-7 @coroutine#114" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(114), "coroutine#114":StandaloneCoroutine{Cancelling}@3b0d2c75, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenLockedEntryStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndSavedInPersistentPath(UstadCacheJvmTest.kt:285) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): copied request data for http://www.server.com/file.png to /tmp/junit10697562358050398908/junit16831452818051165133/tmpWork/1.tmp (integrity=sha256-hlfF4oGFRfane2XiRyLv02LtOJ4Va2UanpQV0im/K8I=) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?ts=1 Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?ts=1 Exception in thread "DefaultDispatcher-worker-2 @coroutine#125" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(125), "coroutine#125":StandaloneCoroutine{Cancelling}@4a724003, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenNoVarySearchHeaderSet_whenRetrievedUsingMatchingUrl_thenIsCacheHit(UstadCacheJvmTest.kt:645) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?ts=1 Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?ts=1 Exception in thread "DefaultDispatcher-worker-2 @coroutine#135" androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) at androidx.sqlite.SQLite.execSQL(Unknown Source) at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(135), "coroutine#135":StandaloneCoroutine{Cancelling}@6ef85949, Dispatchers.IO] Caused by: androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) at androidx.sqlite.SQLite.execSQL(Unknown Source) at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124) at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): store request for 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [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=) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINEST: [VERBOSE] UstadCache - UstadCache(): cacheEntries created 1 entries Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server Exception in thread "DefaultDispatcher-worker-2 @coroutine#140" kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at com.ustadmobile.libcache.util.ChannelExtKt.receiveAndUpdateBacklogSize(ChannelExt.kt:53) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:384) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(140), "coroutine#140":StandaloneCoroutine{Cancelling}@1f4232dc, Dispatchers.IO] Caused by: kotlinx.coroutines.channels.ClosedReceiveChannelException: Channel was closed at kotlinx.coroutines.channels.BufferedChannel.getReceiveException(BufferedChannel.kt:1739) at kotlinx.coroutines.channels.BufferedChannel.resumeWaiterOnClosedChannel(BufferedChannel.kt:2181) at kotlinx.coroutines.channels.BufferedChannel.resumeReceiverOnClosedChannel(BufferedChannel.kt:2170) at kotlinx.coroutines.channels.BufferedChannel.cancelSuspendedReceiveRequests(BufferedChannel.kt:2163) at kotlinx.coroutines.channels.BufferedChannel.completeClose(BufferedChannel.kt:1940) at kotlinx.coroutines.channels.BufferedChannel.isClosed(BufferedChannel.kt:2219) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend0(BufferedChannel.kt:2194) at kotlinx.coroutines.channels.BufferedChannel.isClosedForSend(BufferedChannel.kt:2191) at kotlinx.coroutines.channels.BufferedChannel.completeCloseOrCancel(BufferedChannel.kt:1912) at kotlinx.coroutines.channels.BufferedChannel.closeOrCancelImpl(BufferedChannel.kt:1805) at kotlinx.coroutines.channels.BufferedChannel.close(BufferedChannel.kt:1764) at kotlinx.coroutines.channels.SendChannel.close$default(Channel.kt:263) at com.ustadmobile.libcache.UstadCacheImpl.close(UstadCacheImpl.kt:1000) at com.ustadmobile.libcache.UstadCacheJvmTest.withTestCache(UstadCacheJvmTest.kt:215) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved(UstadCacheJvmTest.kt:233) at com.ustadmobile.libcache.UstadCacheJvmTest.assertFileCanBeCachedAndRetrieved$default(UstadCacheJvmTest.kt:221) at com.ustadmobile.libcache.UstadCacheJvmTest.givenNoVarySearchHeaderSet_whenRetrievedUsingMatchingUrl_thenIsCacheHit(UstadCacheJvmTest.kt:645) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.runRequest(JUnitTestExecutor.java:175) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:84) at org.gradle.api.internal.tasks.testing.junit.JUnitTestExecutor.accept(JUnitTestExecutor.java:47) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestDefinitionProcessor.processTestDefinition(AbstractJUnitTestDefinitionProcessor.java:65) at org.gradle.api.internal.tasks.testing.SuiteTestDefinitionProcessor.processTestDefinition(SuiteTestDefinitionProcessor.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestDefinition(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:178) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog INFO: [INFO] UstadCache - UstadCache(): Retrieve http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server Aug 19, 2026 6:56:44 PM io.github.aakira.napier.DebugAntilog performLog FINE: [DEBUG] UstadCache - UstadCache(): FOUND http://www.server.com/file.png?lang=en&lesson=2&actor=janedoe&endpoint=server Exception in thread "DefaultDispatcher-worker-2 @coroutine#150" androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) at androidx.sqlite.SQLite.execSQL(Unknown Source) at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42) at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(150), "coroutine#150":StandaloneCoroutine{Cancelling}@10a12185, Dispatchers.IO] Caused by: androidx.sqlite.SQLiteException: Error code: 21, message: statement is closed at androidx.sqlite.SQLite__SQLiteKt.throwSQLiteException(SQLite.kt:64) at androidx.sqlite.SQLite.throwSQLiteException(Unknown Source) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.throwIfClosed(BundledSQLiteStatement.jvmAndAndroid.kt:124) at androidx.sqlite.driver.bundled.BundledSQLiteStatement.reset(BundledSQLiteStatement.jvmAndAndroid.kt:106) at androidx.room.coroutines.ConnectionWithLock$CachedStatement.close(ConnectionPoolImpl.kt:401) at kotlin.jdk7.AutoCloseableKt.closeFinally(AutoCloseableJVM.kt:43) at androidx.sqlite.SQLite__SQLite_nonWebKt.execSQL(SQLite.nonWeb.kt:26) at androidx.sqlite.SQLite.execSQL(Unknown Source) at androidx.room.coroutines.PooledConnectionImpl.endTransaction(ConnectionPoolImpl.kt:514) at androidx.room.coroutines.PooledConnectionImpl.transaction(ConnectionPoolImpl.kt:482) at androidx.room.coroutines.PooledConnectionImpl.withTransaction(ConnectionPoolImpl.kt:443) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invokeSuspend(UstadCacheImpl.kt:396) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at com.ustadmobile.libcache.UstadCacheImpl$4$1.invoke(UstadCacheImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(ConnectionPoolImpl.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159) at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.jvmNative.kt:52) at androidx.room.RoomDatabase.useConnection(RoomDatabase.jvmNative.kt:255) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invokeSuspend(RoomDatabase.kt:502) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at androidx.room.RoomDatabaseKt__RoomDatabaseKt$useWriterConnection$2.invoke(RoomDatabase.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at androidx.room.RoomDatabaseKt__RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:501) at androidx.room.RoomDatabaseKt.useWriterConnection(RoomDatabase.kt:1) at com.ustadmobile.libcache.UstadCacheImpl$4.invokeSuspend(UstadCacheImpl.kt:395) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124) at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704) ]]>