Details
-
New Feature
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
None
Description
This is useful in a read-scaleout replication setup, where the application writes to a single master but divides the reads out to a number of slaves to distribute the load. In such a setup, an application could first do a write on the master, and then a bit later do a read on a slave, and if the slave is not fast enough, the data read from the slave might not include the update just made, possibly confusing the application and/or the end-user.
The solution to address that issue is already available in MariaDB
https://mariadb.com/kb/en/mariadb/master_gtid_wait/
Maintain in maxscale a list of GTID apply to master but not yet receive by the slaves .
just fecth gtid_binlog_pos in mariadb >= 10.0
When a read statement is routed on a slave,
inject before query .
master_gtid_wait(list of gtid, timeout)
If timeout happen query should be routed to master or rerouted if the queuing take place on the slave .