Crash in amarr
vexdev opened this issue · 3 comments
vexdev commented
Happened randomly, not sure what caused it, restarting amarr solved the issue:
amarr | jamule.exception.CommunicationException: Unable to get download queue
amarr | at jamule.AmuleClient.getDownloadQueue-d1pmJ48(AmuleClient.kt:152)
amarr | at amarr.torrent.TorrentService.getTorrentInfo(TorrentService.kt:22)
amarr | at amarr.torrent.TorrentApiKt$torrentApi$1$7.invokeSuspend(TorrentApi.kt:58)
amarr | at amarr.torrent.TorrentApiKt$torrentApi$1$7.invoke(TorrentApi.kt)
amarr | at amarr.torrent.TorrentApiKt$torrentApi$1$7.invoke(TorrentApi.kt)
amarr | at io.ktor.server.routing.Route$buildPipeline$1$1.invokeSuspend(Route.kt:116)
amarr | at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt)
amarr | at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
amarr | at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
amarr | at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
amarr | at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invoke(Pipeline.kt)
amarr | at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invoke(Pipeline.kt)
amarr | at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
amarr | at io.ktor.server.routing.Routing.executeResult(Routing.kt:190)
amarr | at io.ktor.server.routing.Routing.interceptor(Routing.kt:64)
amarr | at io.ktor.server.routing.Routing$Plugin$install$1.invokeSuspend(Routing.kt:140)
amarr | at io.ktor.server.routing.Routing$Plugin$install$1.invoke(Routing.kt)
amarr | at io.ktor.server.routing.Routing$Plugin$install$1.invoke(Routing.kt)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr | at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invokeSuspend(BaseApplicationEngine.kt:124)
amarr | at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invoke(BaseApplicationEngine.kt)
amarr | at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invoke(BaseApplicationEngine.kt)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
amarr | at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
amarr | at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
amarr | at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr | at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr | at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
amarr | at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invokeSuspend(DefaultEnginePipeline.kt:123)
amarr | at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invoke(DefaultEnginePipeline.kt)
amarr | at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invoke(DefaultEnginePipeline.kt)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr | at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
amarr | at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr | at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invokeSuspend(NettyApplicationCallHandler.kt:119)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
amarr | at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:44)
amarr | at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
amarr | at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
amarr | at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
amarr | at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler.handleRequest(NettyApplicationCallHandler.kt:37)
amarr | at io.ktor.server.netty.NettyApplicationCallHandler.channelRead(NettyApplicationCallHandler.kt:29)
amarr | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
amarr | at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61)
amarr | at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:425)
amarr | at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
amarr | at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
amarr | at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
amarr | at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
amarr | at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
amarr | at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
amarr | at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda$1$lambda$0(NettyApplicationEngine.kt:296)
amarr | at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
amarr | at java.base/java.lang.Thread.run(Thread.java:833)
vexdev commented
TCP Dump seems to be parsed correctly from jAmule, increasing logs to see what is the actual response parsed.
vexdev commented
Added logging, waiting to reproduce.
vexdev commented
Seems like a concurrency issue, specifically because the EC protocol is purely synchronous, and we are are allowing asynchronous communication through jAmule.
Will adjust...