Bug #289: Server Managment Box to prevent Database invoked Crashes
ID | #289 |
---|---|
Submitter | Hacker_Alex |
Product | EOSERV |
Severity | Feature Request |
Status | CLOSED, WONTFIX |
Submitted | 11th Feb 2014 |
Updated | 11th Feb 2014 |
What if you made a box around eoserv. This box can dynamicly appear and dissapear. Basicly if a critical error occurs such as a database disconnect or fatal database control error, the box is created. it "freezes" all activity while keeping all connections alive, sending all players a text box explaining that a critical error has occurred and will be resolved in a few seconds. All clients will have been sent the freeze packet to force a client side freeze. All inbound packets that aren't ping or have to do with the active connection will be dropped during this period.
During this time, client packet updates will be sent to keep the connections alive and eoserv will alert the server admin by producing a pop-up window and will also attempt to reconnect to the database 3 times with 5 second intervals then repeat until 15-30seconds have passed. Then eoserv will give up and restart itself unless the owner types a command in the console that resets the countdown.
At this point, you can make eoserv dump its database cache to an external file. On start-up it can attempt to read and recover data. If not all data can be recovered then it is forced to abandon it (to avoid duping).
That would prevent crashes when server owners try editing their database while eoserv is running, and other database crashes such as described in [url=http://eoserv.net/bugs/view_bug/288]bug 288[/url]
Imagine if you could make a database editing command that puts the server into that idle state I described and lets the owner do a quick change to their database without as much downtime.
This will probably be really hard depending on how you've organized your source. I don't expect you to accept it anytime soon. but it would be a nice error handling environment and live debugging environment.
Comments
Updated Title to Server Managment Box to prevent Database invoked Crashes
I don't get the point here. The database automatically reconnects already. The "crash" of bug 288 is caused because of a lack of exception handling (which is being added right now), and any real crashes wouldn't be recoverable.
Direct database editing works okay on characters not logged in, and $set commands or kicking players off out should be sufficient if something needs changing. Better way to do this would be an external program that can communicate with EOSERV and provide a consistent interface for modifying logged-in and logged-out characters/accounts.
Dumping the transaction log to disk if the database is down too long might be a valid suggestion, to avoid small rollbacks in the case the db connection goes down, but can cause issues if the server is down for long periods before being put back up, and other applications (i.e. webcp) might've modified the database.
Updated Status to CLOSED, WONTFIX
Add Comment
Please don't post unless you have something relevant to the bug to say.
Do not comment to say "thanks" or "fix this please".
Please log in to add comments. EOSERV Bug Tracker > Bug #289: Server Managment Box to prevent Database invoked Crashes