Asteroid voxels not being cleaned after restarts

Adrian Revill shared this bug 15 hours ago
Submitted

When the voxel age is set to a value longer than the server/game restart period, the trash removal does not clean up the asteroids. I also believe this affects planets. This results in the asteroids never getting refreshed.


At every save, the vx2 files are read, any cached pending changes are applied, and the file is rewritten. The result is that the access time is written at the first save.

If the asteroid is not mined again, no pending changes are added to the cache, and the asteroid is never updated.


This can be seen in the filesystem. The vx2 file appears at the first save, and the file's checksum never changes after that.


If the auto-save period is 5 minutes, then the maximum relative age stored in the vx2 is 5 minutes.

At any restart, the relative age is read in, which means the trash removal only ever sees the age as game-up-time + max_5_minutes. Therefore, if the game uptime is less than the configured max voxel age, the asteroid will never be cleaned.


What should happen at every save is that the relative access time is recalculated and saved into the vx2 file. As all the files are fully re-read and rewritten every save, I feel this would have a minimal impact on server performance.


This is a scenario-breaking issue for our server. We aimed to have asteroid resources very scarce and to discourage repeat farming; the voxel age was set to several days. As we need to restart every 6 hours, this means we have an ever-growing list of vx2 files and ever-increasing login times.

Leave a Comment
 
Attach a file