ViolaFlower/Re-Console

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

Recording 1 (no log)

Recording 2
Log: https://mclo.gs/i5tr6P3

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

Still happens
2024-07-19_16 17 02

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