jenchanws / create-track-map

Create train track map mod for Minecraft (Fabric & Forge)
https://modrinth.com/mod/create-track-map
MIT License
65 stars 19 forks source link

Trains or segments stop working at random #66

Open Flexz9 opened 6 months ago

Flexz9 commented 6 months ago

Describe the Bug

Once in a while it stops updating the trains or segments. A restart of the server helps.

Reproduction Steps

  1. Run the server till it fails
  2. Usually within a few hours

Expected Result

Recover from whatever is going wrong? I don't mind to refresh the web page as a user.

Screenshots and Videos

[16Feb2024 17:47:49.548] [DefaultDispatcher-worker-10/DEBUG] [ktor.application/]: 200 OK: GET - /api/signals.rt. Exception class java.io.IOException: Broken pipe]
java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:?]
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62) ~[?:?]
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132) ~[?:?]
    at sun.nio.ch.IOUtil.write(IOUtil.java:76) ~[?:?]
    at sun.nio.ch.IOUtil.write(IOUtil.java:53) ~[?:?]
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:532) ~[?:?]
    at io.ktor.network.sockets.CIOWriterKt$attachForWritingDirectImpl$1$1.invokeSuspend(CIOWriter.kt:107) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:68) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:347) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at io.ktor.utils.io.internal.CancellableReusableContinuation.resumeWith(CancellableReusableContinuation.kt:93) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.resumeReadOp(ByteBufferChannel.kt:2098) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.flushImpl(ByteBufferChannel.kt:186) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.flush(ByteBufferChannel.kt:196) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeAsMuchAsPossible(ByteBufferChannel.kt:3438) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeFully$suspendImpl(ByteBufferChannel.kt:1399) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeFully(ByteBufferChannel.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1.loop(Blocking.kt:94) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1$loop$1.invokeSuspend(Blocking.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at io.ktor.utils.io.jvm.javaio.UnsafeBlockingTrampoline.dispatch(Blocking.kt:313) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:200) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:231) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:201) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.OutputAdapter.write(Blocking.kt:120) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:234) ~[?:?]
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:313) ~[?:?]
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:318) ~[?:?]
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160) ~[?:?]
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248) ~[?:?]
    at littlechasiu.ctm.Server$module$1$10$invokeSuspend$$inlined$respondSSE$1$1$2.emit(Emitters.kt:233) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(SharedFlow.kt) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    Suppressed: java.io.IOException: java.io.IOException: Broken pipe
        at io.ktor.utils.io.jvm.javaio.OutputAdapter.close(Blocking.kt:134) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:347) ~[?:?]
        at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:169) ~[?:?]
        at java.io.OutputStreamWriter.close(OutputStreamWriter.java:252) ~[?:?]
        at kotlin.io.CloseableKt.closeFinally(Closeable.kt:59) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.http.content.WriterContent$writeTo$2.invokeSuspend(WriterContent.kt:25) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    Caused by: java.io.IOException: Broken pipe
        at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:?]
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62) ~[?:?]
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132) ~[?:?]
        at sun.nio.ch.IOUtil.write(IOUtil.java:76) ~[?:?]
        at sun.nio.ch.IOUtil.write(IOUtil.java:53) ~[?:?]
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:532) ~[?:?]
        at io.ktor.network.sockets.CIOWriterKt$attachForWritingDirectImpl$1$1.invokeSuspend(CIOWriter.kt:107) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:68) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:347) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.internal.CancellableReusableContinuation.resumeWith(CancellableReusableContinuation.kt:93) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.resumeReadOp(ByteBufferChannel.kt:2098) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.flushImpl(ByteBufferChannel.kt:186) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.flush(ByteBufferChannel.kt:196) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeAsMuchAsPossible(ByteBufferChannel.kt:3438) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeFully$suspendImpl(ByteBufferChannel.kt:1399) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeFully(ByteBufferChannel.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1.loop(Blocking.kt:94) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1$loop$1.invokeSuspend(Blocking.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.jvm.javaio.UnsafeBlockingTrampoline.dispatch(Blocking.kt:313) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:200) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:231) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:201) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter.write(Blocking.kt:120) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:234) ~[?:?]
        at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:313) ~[?:?]
        at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:318) ~[?:?]
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160) ~[?:?]
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248) ~[?:?]
        at littlechasiu.ctm.Server$module$1$10$invokeSuspend$$inlined$respondSSE$1$1$2.emit(Emitters.kt:233) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(SharedFlow.kt) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        ... 8 more
[16Feb2024 17:47:49.548] [DefaultDispatcher-worker-13/DEBUG] [ktor.application/]: 200 OK: GET - /api/trains.rt. Exception class java.io.IOException: Broken pipe]
java.io.IOException: Broken pipe
    at jdk.internal.reflect.GeneratedConstructorAccessor103.newInstance(Unknown Source) ~[?:?]
    at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
    at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
    at io.ktor.utils.io.ExceptionUtilsJvmKt$createConstructor$$inlined$safeCtor$1.invoke(ExceptionUtilsJvm.kt:103) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ExceptionUtilsJvmKt$createConstructor$$inlined$safeCtor$1.invoke(ExceptionUtilsJvm.kt:90) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ExceptionUtilsJvmKt.tryCopyException(ExceptionUtilsJvm.kt:45) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannelKt.rethrowClosed(ByteBufferChannel.kt:2398) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannelKt.access$rethrowClosed(ByteBufferChannel.kt:1) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.setupStateForWrite$ktor_io(ByteBufferChannel.kt:232) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeByte$suspendImpl(ByteBufferChannel.kt:2647) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeByte(ByteBufferChannel.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeByte$suspendImpl(ByteBufferChannel.kt:930) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.writeByte(ByteBufferChannel.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.http.cio.internals.CharsKt.writeIntHex(Chars.kt:108) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.http.cio.ChunkedTransferEncodingKt.writeChunk-yRinSxo(ChunkedTransferEncoding.kt:162) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.http.cio.ChunkedTransferEncodingKt.encodeChunked(ChunkedTransferEncoding.kt:134) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.http.cio.ChunkedTransferEncodingKt$encodeChunked$3.invokeSuspend(ChunkedTransferEncoding.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:204) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at io.ktor.utils.io.internal.CancellableReusableContinuation.resumeWith(CancellableReusableContinuation.kt:93) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.resumeReadOp(ByteBufferChannel.kt:2098) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.flushImpl(ByteBufferChannel.kt:186) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.ByteBufferChannel.flush(ByteBufferChannel.kt:196) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1.loop(Blocking.kt:92) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1$loop$1.invokeSuspend(Blocking.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at io.ktor.utils.io.jvm.javaio.UnsafeBlockingTrampoline.dispatch(Blocking.kt:313) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:200) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:231) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at io.ktor.utils.io.jvm.javaio.OutputAdapter.flush(Blocking.kt:125) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:320) ~[?:?]
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160) ~[?:?]
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248) ~[?:?]
    at littlechasiu.ctm.Server$module$1$12$invokeSuspend$$inlined$respondSSE$1$1$2.emit(Emitters.kt:233) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(SharedFlow.kt) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    Suppressed: java.io.IOException: java.io.IOException: Broken pipe
        at io.ktor.utils.io.jvm.javaio.OutputAdapter.close(Blocking.kt:134) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:347) ~[?:?]
        at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:169) ~[?:?]
        at java.io.OutputStreamWriter.close(OutputStreamWriter.java:252) ~[?:?]
        at kotlin.io.CloseableKt.closeFinally(Closeable.kt:59) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.http.content.WriterContent$writeTo$2.invokeSuspend(WriterContent.kt:25) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    Caused by: java.io.IOException: Broken pipe
        at jdk.internal.reflect.GeneratedConstructorAccessor103.newInstance(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
        at io.ktor.utils.io.ExceptionUtilsJvmKt$createConstructor$$inlined$safeCtor$1.invoke(ExceptionUtilsJvm.kt:103) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ExceptionUtilsJvmKt$createConstructor$$inlined$safeCtor$1.invoke(ExceptionUtilsJvm.kt:90) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ExceptionUtilsJvmKt.tryCopyException(ExceptionUtilsJvm.kt:45) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannelKt.rethrowClosed(ByteBufferChannel.kt:2398) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannelKt.access$rethrowClosed(ByteBufferChannel.kt:1) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.setupStateForWrite$ktor_io(ByteBufferChannel.kt:232) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeByte$suspendImpl(ByteBufferChannel.kt:2647) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeByte(ByteBufferChannel.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeByte$suspendImpl(ByteBufferChannel.kt:930) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.writeByte(ByteBufferChannel.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.http.cio.internals.CharsKt.writeIntHex(Chars.kt:108) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.http.cio.ChunkedTransferEncodingKt.writeChunk-yRinSxo(ChunkedTransferEncoding.kt:162) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.http.cio.ChunkedTransferEncodingKt.encodeChunked(ChunkedTransferEncoding.kt:134) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.http.cio.ChunkedTransferEncodingKt$encodeChunked$3.invokeSuspend(ChunkedTransferEncoding.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:204) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.internal.CancellableReusableContinuation.resumeWith(CancellableReusableContinuation.kt:93) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.resumeReadOp(ByteBufferChannel.kt:2098) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.flushImpl(ByteBufferChannel.kt:186) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.flush(ByteBufferChannel.kt:196) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1.loop(Blocking.kt:92) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1$loop$1.invokeSuspend(Blocking.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.jvm.javaio.UnsafeBlockingTrampoline.dispatch(Blocking.kt:313) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:200) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:231) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter.flush(Blocking.kt:125) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:320) ~[?:?]
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160) ~[?:?]
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248) ~[?:?]
        at littlechasiu.ctm.Server$module$1$12$invokeSuspend$$inlined$respondSSE$1$1$2.emit(Emitters.kt:233) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(SharedFlow.kt) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        ... 8 more
    Caused by: java.io.IOException: Broken pipe
        at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:?]
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62) ~[?:?]
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132) ~[?:?]
        at sun.nio.ch.IOUtil.write(IOUtil.java:76) ~[?:?]
        at sun.nio.ch.IOUtil.write(IOUtil.java:53) ~[?:?]
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:532) ~[?:?]
        at io.ktor.network.sockets.CIOWriterKt$attachForWritingDirectImpl$1$1.invokeSuspend(CIOWriter.kt:107) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:68) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:347) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.internal.CancellableReusableContinuation.resumeWith(CancellableReusableContinuation.kt:93) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.resumeReadOp(ByteBufferChannel.kt:2098) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.flushImpl(ByteBufferChannel.kt:186) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.ByteBufferChannel.flush(ByteBufferChannel.kt:196) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1.loop(Blocking.kt:92) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter$loop$1$loop$1.invokeSuspend(Blocking.kt) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.jvm.javaio.UnsafeBlockingTrampoline.dispatch(Blocking.kt:313) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:200) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at io.ktor.utils.io.jvm.javaio.BlockingAdapter.submitAndAwait(Blocking.kt:231) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at io.ktor.utils.io.jvm.javaio.OutputAdapter.flush(Blocking.kt:125) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:320) ~[?:?]
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160) ~[?:?]
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248) ~[?:?]
        at littlechasiu.ctm.Server$module$1$12$invokeSuspend$$inlined$respondSSE$1$1$2.emit(Emitters.kt:233) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
        at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(SharedFlow.kt) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
        ... 8 more
Caused by: java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:?]
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62) ~[?:?]
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132) ~[?:?]
    at sun.nio.ch.IOUtil.write(IOUtil.java:76) ~[?:?]
    at sun.nio.ch.IOUtil.write(IOUtil.java:53) ~[?:?]
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:532) ~[?:?]
    at io.ktor.network.sockets.CIOWriterKt$attachForWritingDirectImpl$1$1.invokeSuspend(CIOWriter.kt:107) ~[create-track-map-1.4+mc1.20.1-neoforge.jar%23228!/:1.4]
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:68) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:347) ~[kotlinforforge-4.10.0-all.jar%23272!/:?]
    ... 26 more

I found these in debug.log

Crash Report or Log

No response

Operating System

Unraid server

CTM Version

1.4

Create Version

0.5.1e

Minecraft Version

1.20.1

Mod Loader

Forge

Modloader Version

47.2.20

Instance Type

Server hosted on vps/dedicated server

Other Mods

No response

Additional Context

No response

Flexz9 commented 6 months ago

Have to test if /ctm reload helps. If it does an option to run this command on a configurable interval would be fine by me.

Jan-DT commented 2 months ago

I'm having the same issue, /ctm reload does not fix it for me, though sometimes it randomly starts working again after breaking and re-placing a track in-game.

ProGoofster commented 1 month ago

I am having this issue too