Light update suppression is the delaying of light updates and then stopping the server to effectively delete them.
When a block being moved, placed, or broken, a light update is produced. These light updates are placed in a queue for the light thread to process. When the light thread gets to that update it processes it and the light level is changed in the world. The light thread and the main game thread are asynchronous; if one thread is slowing down, the other can still keep going. Light Suppression works by filling that queue with too many light updates, which will cause the light thread to lag behind the main game thread, meaning that any new light updates queued from the main thread will only be processed if the light thread gets a chance to “catch up”. When the server is stopped, any unprocessed light updates are deleted and thereby not processed, so the light level will stay in this incorrect state.
/stop
command or crashing with an update suppressor. Results with /stop
can be inconsistent so /save-all flush
can be ran before to fix that.In 1.17 a basic form of thread syncing was added limiting the light queue to about 20,000 light updates. Previously the light update queue was could be as big as the server’s allocated memory.