ModdedMinecraft / MMCReboot

A simple to use restart management plugin for sponge
GNU General Public License v3.0
6 stars 6 forks source link

World incosistency on busy server restarts (save-all command when players are online) #35

Closed skyline918 closed 3 years ago

skyline918 commented 3 years ago

Hello, I have faced the problem which is fully described in screenshot from Sponge discord server chat. Sponge developer pointed on a problem with saving the world with active players. Here is the screenshot. image

The problem sometimes happened only when there more than 15-20 players, so it is realy hard to reproduce it. My players offten report it due to some dupes or loses of items.

leelawd commented 3 years ago

Thanks for the report, I will see what I can do to remedy the shutdown code after I get back from work

leelawd commented 3 years ago

https://ore.spongepowered.org/leelawd93/MMCReboot/versions/2.3.3 I hope this works better for you

skyline918 commented 3 years ago

Hello again, I have tested latest build and there is a problem that whitelist always keeps to be enabled after restart. Also I have checked logs, it seems that kicks before restarts are working but "left the game" messages are printed in log after save-all command. I think it is ok, maybe player disconnect is not an instant action and it is async/other thread blocking operation, I am telling it just in case. Main problem is persistent whitelist.

Here is the log screenshot just in case image

leelawd commented 3 years ago

MMCReboot-2.3.3-API-7.jar.zip

I removed the whitelist for now and added a 1 second delay between the kicks and save just in-case. I'm not sure why its forcing the whitelist on constantly as it wasn't doing it on my test setup but cannot force it off after the save and before shutdown in-case a server is actually using a whitelist feature

skyline918 commented 3 years ago

Hello again, tested it now. Now during restart there is IllegalMonitorStateException (I think it is related to delay between kicks and saving). If you need full latest.log feel free to ask me, I will post in pastebin. If it is not simple to implement delay, I think it is okay not to implement it at all, assuming that server rejects any client packets after kick method was executed, and it just has delay to close socket. If you want I can clarify it on sponge discord server to help as I can. image

leelawd commented 3 years ago

Yea, I will revert it as soon as I get home in around 6 hours. It shouldn’t cause any issues but I’ll test a few things out on my end and see if I can get anything to work smoothly enough

leelawd commented 3 years ago

Ok, my apologies for the wierdness happening, This should have the fixed delay https://ore.spongepowered.org/leelawd93/MMCReboot/versions/2.3.4

skyline918 commented 3 years ago

Sorry for the delay, I have tested latest build with 20 players online. The delay between kick and saving is working (according to the logs). Thank you very much for help.