Details
-
New Feature
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
None
-
Centos 7.x
-
MXS-SPRINT-93
Description
The causal read feature of the ReadWriteSplit router does not work if the application that connects to MaxScale is using connection pooling. For example:
Sequelize is a promise-based Node.js ORM that includes connection pooling.
Typical database connection construction looks like this:
database: {
|
host: 'scdb.selectquotesenior.com', |
name: 'selectcare_sqs', |
username: 'selectcare', |
password: 'password', |
pool: {
|
max: 10, |
min: 0, |
idle: 10000 |
}
|
},
|
In this scenario, the customer is using MaxScale 2.3.4 with MariaDB 10.3.12.
session_track_system_variables is set to include last_gtid.
Causal reads work as expected when directly connecting to MaxScale with a single client.
However, when using pooling in the application layer or abstraction layer, one thread in the pool might have done the write while others may be doing the reads. Currently MaxScale cannot track this type of behavior and sees them as two separate connections which is not caught by the causal read feature of MaxScale.
Attachments
Issue Links
- relates to
-
MXS-1720 Priori causal read
- Closed