We’ve got a database (MySQL ) that has a client ‘per channel’. When a player changes channel from, say, 1 to 2, we have to save the state of the player to the database.
Saving is done in multiple transactions (per table), which include in most cases a DELETE FROM table WHERE player = X; INSERT INTO table VALUES (...);
. Some other tables require only an UPDATE statement.
The problem is as follows:
Player starts moving from channel 1 to channel 2 Channel 1 registers transition in Redis, making sure that player is bounced on Channel 2 until player is saved. Player disconnects from channel 1 Player connects to channel 2, gets asked to reconnect (bounce) Channel 1 received disconnection, saves character, disables bouncing Player connects to channel 2, gets accepted Channel 2 loads info from database --THIS IS OUTDATED INFO--
I’m about to, instead of deleting the Redis key, to change the TTL of the key to a couple seconds to prevent it from loading old info. But it doesn’t guarantee anything, as the database is a system on its own…
For the record, there’s a MariaDB instance that acts as a slave for backup purposes.