CivClassic/Citadel

Sometimes reinforcements are not saved on chunk unload?

Opened this issue · 1 comments

I'm not sure if this falls under Citadel or CMC. This issue was discovered when the server crashed and multiple players reported losing reinforcements in areas they had worked on earlier in the day before the crash. Expected behavior is when a chunk is unloaded and saved, any respective Citadel/etc data is saved to the database.

In some instances players had built using /ctf and had finished and logged off several hours before the crash. After the crash the blocks they had placed were still there, but they had no reinforcements. This leads me to believe the chunk was successfully unloaded and saved, but the Citadel reinforcements were not saved to the database and remained in memory.

If my assumption is correct, there must be some situation which causes Citadel reinforcements not to be saved and to sit in memory all day until restart where they are finally saved. Will need to debug citadel data saving to investigate and fix, unless somebody has other thoughts on why this occurred.

I believe what occurred yesterday at restart was as a result of the server shell being forcibly closed at restart. The server crashed 10 minutes prior to restart, and was likely terminated when the actual restart shutdown task began. This is probably what resulted in the reinforcements being deleted.

Currently I believe the Citadel behavior is to not push any changes to DB until a shutdown/crash (I'm not familiar with the plugin, so this could potentially be untrue). The issue in this case (and why this hasn't happened with any other crash) is that the server process was terminated mid-save. This is why Bastion, and a few other plugins have seemingly successfully saved.

Most of Citadels saving falls under CMC I think, as the DAO relies heavily on CMC libraries.