Version:
- Minecraft Version: [1.20.1]
- Forge Version [47.4.10]
- Mod Version [0.9.0-C6+2]
- DragonLib 3.0.21
Describe the bug
Client Disconnect when placing a train track
To Reproduce
Steps to reproduce the behavior:
- Place a train track, have a train pass by on a nearby track.
- Client will disconnect player placing track in around 10 seconds, everyone else in a minute.
- Server Logs show the following error.
Error:
[22:56:58] [DragonLib Network Worker Thread #5/ERROR] [DragonLib Networking System/]: Could not handle network task.
java.util.ConcurrentModificationException: null
at java.util.HashMap.computeIfAbsent(HashMap.java:1230) ~[?:?] {re:mixin}
at com.simibubi.create.content.trains.graph.EdgePointStorage.getMap(EdgePointStorage.java:48) ~[create-1.20.1-6.0.8.jar%23325!/:6.0.8] {re:classloading}
at com.simibubi.create.content.trains.graph.EdgePointStorage.values(EdgePointStorage.java:41) ~[create-1.20.1-6.0.8.jar%23325!/:6.0.8] {re:classloading}
at com.simibubi.create.content.trains.graph.TrackGraph.getPoints(TrackGraph.java:89) ~[create-1.20.1-6.0.8.jar%23325!/:6.0.8] {re:mixin,re:classloading}
at de.mrjulsen.crn.data.train.TrainUtils.lambda$static$0(TrainUtils.java:45) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at java.util.HashMap.forEach(HashMap.java:1430) ~[?:?] {re:mixin}
at de.mrjulsen.crn.data.train.TrainUtils.lambda$static$1(TrainUtils.java:44) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.mcdragonlib.util.Cache.get(Cache.java:56) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at de.mrjulsen.crn.data.train.TrainUtils.getAllStations(TrainUtils.java:164) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.crn.data.train.TrainUtils.stationExists(TrainUtils.java:151) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.crn.data.train.TrainPrediction.getScheduledStationName(TrainPrediction.java:169) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.crn.data.train.TrainStop.<init>(TrainStop.java:130) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.crn.data.train.TrainStop.<init>(TrainStop.java:111) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.crn.data.train.portable.TrainDisplayData.lambda$of$9(TrainDisplayData.java:216) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at java.util.Optional.map(Optional.java:260) ~[?:?] {re:mixin}
at de.mrjulsen.crn.data.train.portable.TrainDisplayData.of(TrainDisplayData.java:176) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.crn.network.packets.pain.GetTrainDisplayDataPacketData.handle(GetTrainDisplayDataPacketData.java:77) ~[createrailwaysnavigator-forge-1.20.1-alpha-0.9.0-C6+2.jar%23352!/:1.20.1-alpha-0.9.0-C6+2] {re:classloading}
at de.mrjulsen.mcdragonlib.network.NetworkPacketType$SendAndReceive.lambda$receiveRequest$3(NetworkPacketType.java:529) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at de.mrjulsen.mcdragonlib.network.NetworkPacketType.lambda$runAndRespondAsync$2(NetworkPacketType.java:102) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1789) ~[?:?] {}
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) ~[?:?] {}
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) ~[?:?] {}
at java.lang.Thread.run(Thread.java:1474) ~[?:?] {re:mixin}
[22:56:58] [DragonLib Network Worker Thread #5/ERROR] [DragonLib Networking System/]: Could not serialize response. Please check the response data factory.
java.lang.RuntimeException: Cannot invoke "String.isEmpty()" because "p_129298_" is null; Caused by [Flag: -128, Code: -1]: null
at de.mrjulsen.mcdragonlib.network.NetworkPacketType.lambda$runAndRespondAsync$3(NetworkPacketType.java:119) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at de.mrjulsen.mcdragonlib.network.NetworkThreadPool.lambda$executeWithResponse$2(NetworkThreadPool.java:67) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:739) ~[?:?] {}
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1794) ~[?:?] {}
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) ~[?:?] {}
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) ~[?:?] {}
at java.lang.Thread.run(Thread.java:1474) ~[?:?] {re:mixin}
Suppressed: java.lang.Exception: Caused by [Flag: -128, Code: -1]: null
at de.mrjulsen.mcdragonlib.network.NetworkPacketType.lambda$runAndRespondAsync$3(NetworkPacketType.java:117) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at de.mrjulsen.mcdragonlib.network.NetworkThreadPool.lambda$executeWithResponse$2(NetworkThreadPool.java:67) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:739) ~[?:?] {}
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1794) ~[?:?] {}
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) ~[?:?] {}
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) ~[?:?] {}
at java.lang.Thread.run(Thread.java:1474) ~[?:?] {re:mixin}
Caused by: java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "p_129298_" is null
at net.minecraft.nbt.StringTag.m_129297_(StringTag.java:57) ~[server-1.20.1-20230612.114412-srg.jar%23471!/:?] {re:classloading}
at net.minecraft.nbt.CompoundTag.m_128359_(CompoundTag.java:213) ~[server-1.20.1-20230612.114412-srg.jar%23471!/:?] {re:computing_frames,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:lithium.mixins.json:alloc.nbt.NbtCompoundMixin,pl:mixin:A}
at de.mrjulsen.mcdragonlib.data.DLStatus.toNbt(DLStatus.java:35) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at de.mrjulsen.mcdragonlib.network.NetworkPacketData.serializeNbt(NetworkPacketData.java:39) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
at de.mrjulsen.mcdragonlib.network.NetworkPacketType.lambda$runAndRespondAsync$3(NetworkPacketType.java:111) ~[dragonlib-forge-1.20.1-beta-3.0.21.jar%23365!/:?] {re:classloading}
... 7 more
[22:56:58] [DragonLib Network Worker Thread #1/ERROR] [DragonLib Networking System/]: Could not serialize response. Please check the response data factory.
Screenshot of Client disconnect:

Error in Client Logs:
[22:57:58] [ForkJoinPool.commonPool-delayScheduler/ERROR] [DragonLib Networking System/]: Error while waiting for response [ChannelID: createrailwaysnavigator:network, Name: get_train_display_data]
java.util.concurrent.CompletionException: java.util.concurrent.TimeoutException
at java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:376) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:391) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:729) ~[?:?] {}
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2828) ~[?:?] {}
at java.util.concurrent.DelayScheduler$ScheduledForkJoinTask.compute(DelayScheduler.java:510) ~[?:?] {}
at java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1659) ~[?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511) ~[?:?] {}
at java.util.concurrent.DelayScheduler.loop(DelayScheduler.java:325) ~[?:?] {}
at java.util.concurrent.DelayScheduler.run(DelayScheduler.java:221) ~[?:?] {}
Caused by: java.util.concurrent.TimeoutException
... 6 more
[22:57:58] [ForkJoinPool.commonPool-delayScheduler/ERROR] [DragonLib Networking System/]: Error while waiting for response [ChannelID: createrailwaysnavigator:network, Name: get_train_display_data]
java.util.concurrent.CompletionException: java.util.concurrent.TimeoutException
at java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:376) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:391) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:729) ~[?:?] {}
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221) ~[?:?] {re:mixin}
at java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2828) ~[?:?] {}
at java.util.concurrent.DelayScheduler$ScheduledForkJoinTask.compute(DelayScheduler.java:510) ~[?:?] {}
at java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1659) ~[?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511) ~[?:?] {}
at java.util.concurrent.DelayScheduler.loop(DelayScheduler.java:325) ~[?:?] {}
at java.util.concurrent.DelayScheduler.run(DelayScheduler.java:221) ~[?:?] {}
Caused by: java.util.concurrent.TimeoutException
... 6 more
Version:
Describe the bug
Client Disconnect when placing a train track
To Reproduce
Steps to reproduce the behavior:
Error:
Screenshot of Client disconnect:

Error in Client Logs: