ori-community / wotw-rando-server

Backend server for the Ori and the Will of the Wisps Randomizer
https://wotw.orirando.com
MIT License
3 stars 2 forks source link

Observer-Websocket crashing when joining a game that has no seed #20

Closed timoschwarzer closed 2 years ago

timoschwarzer commented 2 years ago
2021-11-12 14:49:06.905 [eventLoopGroupProxy-4-1] ERROR wotw.server.api.ConnectionRegistry - 'null' is not supported for optional properties in ProtoBuf
kotlinx.serialization.SerializationException: 'null' is not supported for optional properties in ProtoBuf
    at kotlinx.serialization.protobuf.internal.ProtobufTaggedEncoder.encodeNull(ProtobufTaggedEncoder.kt:44)
    at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeNullableSerializableValue(Encoding.kt:299)
    at kotlinx.serialization.protobuf.internal.ProtobufTaggedEncoder.encodeNullableSerializableValue(ProtobufTaggedEncoder.kt:11)
    at kotlinx.serialization.protobuf.internal.ProtobufTaggedEncoder.encodeNullableSerializableElement(ProtobufTaggedEncoder.kt:154)
    at wotw.io.messages.protobuf.MultiverseInfoMessage.write$Self(Messages.kt:32)
    at wotw.io.messages.protobuf.MultiverseInfoMessage$$serializer.serialize(Messages.kt:32)
    at wotw.io.messages.protobuf.MultiverseInfoMessage$$serializer.serialize(Messages.kt:32)
    at kotlinx.serialization.protobuf.internal.ProtobufEncoder.encodeSerializableValue(ProtobufEncoding.kt:128)
    at kotlinx.serialization.protobuf.ProtoBuf.encodeToByteArray(ProtoBuf.kt:130)
    at wotw.server.api.ConnectionRegistry.broadcastMultiverseInfoMessage(ConnectionRegistry.kt:293)
    at wotw.server.api.MultiverseEndpoint$initRouting$4$2$multiverseInfo$1.invokeSuspend(MultiverseEndpoint.kt:140)
    at wotw.server.api.MultiverseEndpoint$initRouting$4$2$multiverseInfo$1.invoke(MultiverseEndpoint.kt)
    at wotw.server.api.MultiverseEndpoint$initRouting$4$2$multiverseInfo$1.invoke(MultiverseEndpoint.kt)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$suspendedTransactionAsyncInternal$1.invokeSuspend(Suspended.kt:127)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.startCoroutineImpl(Builders.common.kt:192)
    at kotlinx.coroutines.BuildersKt.startCoroutineImpl(Unknown Source)
    at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:134)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.async(Builders.common.kt:91)
    at kotlinx.coroutines.BuildersKt.async(Unknown Source)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.async$default(Builders.common.kt:82)
    at kotlinx.coroutines.BuildersKt.async$default(Unknown Source)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt.suspendedTransactionAsyncInternal(Suspended.kt:123)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt.access$suspendedTransactionAsyncInternal(Suspended.kt:1)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$newSuspendedTransaction$2.invokeSuspend(Suspended.kt:57)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$newSuspendedTransaction$2.invoke(Suspended.kt)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$newSuspendedTransaction$2.invoke(Suspended.kt)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt.withTransactionScope$newScope(Suspended.kt:108)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt.withTransactionScope(Suspended.kt:114)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt.newSuspendedTransaction(Suspended.kt:56)
    at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt.newSuspendedTransaction$default(Suspended.kt:50)
    at wotw.server.api.MultiverseEndpoint$initRouting$4$2.invokeSuspend(MultiverseEndpoint.kt:95)
    at wotw.server.api.MultiverseEndpoint$initRouting$4$2.invoke(MultiverseEndpoint.kt)
    at wotw.server.api.MultiverseEndpoint$initRouting$4$2.invoke(MultiverseEndpoint.kt)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
    at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
    at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136)
    at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:78)
    at io.ktor.routing.Routing.executeResult(Routing.kt:155)
    at io.ktor.routing.Routing.interceptor(Routing.kt:39)
    at io.ktor.routing.Routing$Feature$install$1.invokeSuspend(Routing.kt:107)
    at io.ktor.routing.Routing$Feature$install$1.invoke(Routing.kt)
    at io.ktor.routing.Routing$Feature$install$1.invoke(Routing.kt)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
    at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
    at io.ktor.features.ContentNegotiation$Feature$install$1.invokeSuspend(ContentNegotiation.kt:145)
    at io.ktor.features.ContentNegotiation$Feature$install$1.invoke(ContentNegotiation.kt)
    at io.ktor.features.ContentNegotiation$Feature$install$1.invoke(ContentNegotiation.kt)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
    at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
    at io.ktor.features.StatusPages$interceptCall$2.invokeSuspend(StatusPages.kt:102)
    at io.ktor.features.StatusPages$interceptCall$2.invoke(StatusPages.kt)
    at io.ktor.features.StatusPages$interceptCall$2.invoke(StatusPages.kt)
    at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
    at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
    at io.ktor.features.StatusPages.interceptCall(StatusPages.kt:101)
    at io.ktor.features.StatusPages.access$interceptCall(StatusPages.kt:18)
    at io.ktor.features.StatusPages$Feature$install$2.invokeSuspend(StatusPages.kt:142)
    at io.ktor.features.StatusPages$Feature$install$2.invoke(StatusPages.kt)
    at io.ktor.features.StatusPages$Feature$install$2.invoke(StatusPages.kt)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
    at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
    at io.ktor.features.CallLogging$Feature$install$2.invokeSuspend(CallLogging.kt:188)
    at io.ktor.features.CallLogging$Feature$install$2.invoke(CallLogging.kt)
    at io.ktor.features.CallLogging$Feature$install$2.invoke(CallLogging.kt)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
    at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
    at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136)
    at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:78)
    at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invokeSuspend(DefaultEnginePipeline.kt:127)
    at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invoke(DefaultEnginePipeline.kt)
    at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invoke(DefaultEnginePipeline.kt)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
    at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
    at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136)
    at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:78)
    at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invokeSuspend(NettyApplicationCallHandler.kt:123)
    at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
    at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
    at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.startCoroutineImpl(Builders.common.kt:194)
    at kotlinx.coroutines.BuildersKt.startCoroutineImpl(Unknown Source)
    at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:134)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
    at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
    at io.ktor.server.netty.NettyApplicationCallHandler.handleRequest(NettyApplicationCallHandler.kt:43)
    at io.ktor.server.netty.NettyApplicationCallHandler.channelRead(NettyApplicationCallHandler.kt:34)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61)
    at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:370)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda-1$lambda-0(NettyApplicationEngine.kt:251)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:829)
timoschwarzer commented 2 years ago

Fixed

kotlinx.serialization Protobuf is ~ weird ~