[MDEV-29848] Partially failed grant not written into binlog => discrepancy between master and replica Created: 2022-10-21 Updated: 2023-11-28 |
|
| Status: | Open |
| Project: | MariaDB Server |
| Component/s: | Authentication and Privilege System, Replication |
| Affects Version/s: | 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10 |
| Fix Version/s: | 10.4, 10.5, 10.6 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Andrei Elkin |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
If GRANT (I suppose REVOKE too, and maybe some other statements sharing the same logic) is executed partially but ends with an error, it isn't written into the binlog with an error code as is customary to do. Naturally it makes the data diverge between master and slave, and further replication is bound to abort. In the test case below, GRANT is called for an existing user foo and non-existing user bar. It is applied to foo on master, but not binary-logged, so it's not applied on the slave. Further operations (e.g. revoking the same grant) would cause replication abort.
Reproducible on all current server versions. |