OpenCubicChunks / CubicChunks

Infinite* height mod for Minecraft
MIT License
531 stars 68 forks source link

fix a rare concurrency bug in AsyncBatchingCubeIO #725

Closed DaMatrix closed 3 years ago

DaMatrix commented 3 years ago

example of the issue in question:

[22:29:37 WARN]: Exception in thread "Mohist File IO Thread - 4" 
[22:29:37 WARN]: java.util.NoSuchElementException
[22:29:37 WARN]:        at java.util.concurrent.ConcurrentHashMap$EntryIterator.next(ConcurrentHashMap.java:3456)
[22:29:37 WARN]:        at java.util.concurrent.ConcurrentHashMap$EntryIterator.next(ConcurrentHashMap.java:3446)
[22:29:37 WARN]:        at it.unimi.dsi.fastutil.objects.AbstractObject2ObjectMap.putAll(AbstractObject2ObjectMap.java:133)
[22:29:37 WARN]:        at it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap.putAll(Object2ObjectOpenHashMap.java:299)
[22:29:37 WARN]:        at it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap.<init>(Object2ObjectOpenHashMap.java:187)
[22:29:37 WARN]:        at it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap.<init>(Object2ObjectOpenHashMap.java:198)
[22:29:37 WARN]:        at io.github.opencubicchunks.cubicchunks.core.server.chunkio.AsyncBatchingCubeIO.func_75814_c(AsyncBatchingCubeIO.java:273)
[22:29:37 WARN]:        at net.minecraft.world.storage.ThreadedFileIOBase.writeChunk(ThreadedFileIOBase.java:76)
[22:29:37 WARN]:        at net.minecraft.world.storage.ThreadedFileIOBase.writeChunk(ThreadedFileIOBase.java:85)
[22:29:37 WARN]:        at net.minecraft.world.storage.ThreadedFileIOBase.lambda$queueIO$0(ThreadedFileIOBase.java:92)
[22:29:37 WARN]:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[22:29:37 WARN]:        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[22:29:37 WARN]:        at java.lang.Thread.run(Thread.java:748)