Quickly rejoining a world can sometimes cause major chunk saving issues
Cjnator38 opened this issue · 13 comments
I've managed to capture two instances of chunk errors potentially caused by quickly rejoining a world with manual save enabled. This issue seems to happen completely randomly, and I haven't been able to recreate this issue on a bare Legacy4J instance. FastQuit is no longer a culprit as I had it (as well as ToolTip Fix) disabled. I haven't tested if this issue occurs with autosave enabled yet. Also unknown if filesystem or operating system is a factor
god damnit I don't wanna fix this stuff 😭
I'll look into it eventually, I've had to push 2 versions in 2 days so I wanna take a break for a bit. I assume this will most likely be a "firing squad the mods until it stops happening" situation tbh
thats literally what it seems to be at this point, im still trying to test it on windows since my games drive uses ntfs and is shared between windows and linux
confirmed it happens on windows 11 on 0.6.2
I heavily doubt this would be an OS issue. In all honesty my tip would just be "don't do this" until I fix it eventually
When will I fix it? I don't know, I'm sorta busy recently
gonna be real hard to break that habit, keeping in mind that relogging cancels fall damage
My only suspicion is potentially noisium????? i cant reproduce
just to be sure. Does this occur in 0.7.0.beta.1 https://github.com/ViolaFlower/Re-Console/releases/tag/0.7.0.beta.1
i have absolutely 0 idea what the problem is then
I've done a bit of testing and found out that Legacy4J's manual saving system seems to be really bugged. I don't entirely know how saving works in vanilla or with L4J installed, but ThreadedAnvilChunkStorage seems to be entirely disabled when autosave is disabled. Exiting the game with Legacy4J and manual save enabled can cause something like this to show up in logs:
java.util.concurrent.RejectedExecutionException: Task IOWorker-chunk 2 false rejected from java.util.concurrent.ThreadPoolExecutor@fe7b6b0[Shutting down, pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 18137]
at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2081) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:841) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1376) ~[?:?]
at net.minecraft.class_3846.method_16908(class_3846.java:135) ~[client-intermediary.jar:?]
at net.minecraft.class_3846.run(class_3846.java:105) ~[client-intermediary.jar:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
The vanilla game also seems to assume that all saves are autosaves, since deleting a world doesn't work if the world is manually saved without autosave enabled ([Render thread/INFO]: Deleting level autosave
is the message that appears when deleting a world)
I'll try to open a bug report on the L4J repo
What a strange issue, honestly. I'm entirely unsure of a fix on my end if it is a RC issue.
Do keep me updated on the issue on the L4J repo