[MXS-3894] Invent a configuration option to allow transaction replay ignore checksum check Created: 2021-11-24 Updated: 2021-12-09 Resolved: 2021-12-08 |
|
| Status: | Closed |
| Project: | MariaDB MaxScale |
| Component/s: | readwritesplit |
| Affects Version/s: | None |
| Fix Version/s: | 6.2.1 |
| Type: | New Feature | Priority: | Critical |
| Reporter: | Gregory Dorman (Inactive) | Assignee: | markus makela |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||
| Sprint: | MXS-SPRINT-146 | ||||||||||||
| Description |
|
In some workflows, particularly the one in one of the important POCs today, unconditional application of the checksum test prevents replay from being used, even though the transaction logic does not in any way merit it. The off-the-top proposal is to allow me to blacklist a bunch of tables and standard functions. MaxScale would skip the checksum if running into a SELECT from any one of these tables. It should be limited to selects without joins. For the POC, a lot less is enough. Skip checksum test on SELECT LAST_INSERT_ID. |
| Comments |
| Comment by Johan Wikman [ 2021-11-29 ] |
|
If SELECT LAST_INSERT_ID() is present in the statements to be replayed it means that the result of that statement already has been sent to the client. If the replay fails due to a checksum mismatch when that statement is executed, it means that the last insert id is different the second time around, perhaps because somebody else has modified the table in the meantime. If the mismatch is ignored, the application will believe that the last insert id is different from what it actually is. Is that something the application can deal with? |
| Comment by markus makela [ 2021-12-07 ] |
|
Adding a transaction_replay_checksum parameter with the values full, result_only and no_insert_id allows for the following behavior:
|