[MDEV-16025] gtid_ignore_duplicates(rpl_gtid.cc) does not contemplate replicate_* filters Created: 2018-04-25 Updated: 2020-08-25 Resolved: 2018-07-17 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Replication |
| Affects Version/s: | 10.0, 10.1, 10.0.34, 10.2, 10.3 |
| Fix Version/s: | 10.0.35 |
| Type: | Bug | Priority: | Major |
| Reporter: | Claudio Nanni | Assignee: | Andrei Elkin |
| Resolution: | Not a Bug | Votes: | 3 |
| Labels: | gtid, replication | ||
| Environment: |
Linux |
||
| Attachments: |
|
| Description |
|
When two GTIDs get to the same Slave like for example via a multisource setup one of the two is discarded if you have gtid_ignore_duplicates=ON. For reference: https://jira.mariadb.org/browse/MDEV-5804 |
| Comments |
| Comment by Elena Stepanova [ 2018-06-12 ] |
|
This is a strange setup, unless I'm missing something. The jpg says, "REPLICATION FILTER B2C such as no transactions coming from A via B have to be applied on C, also because they're supposed to reach C directly via the A2C replication channel. e.g. B2C - replicate_wild_do_tables='dummy%.%'." But doesn't it actually ensure that no transactions coming from B are applied on C at all, either originated from A or from B? And if so, then what's the point in this complicated setup – if you don't want to apply any transactions from B on C, then why have B->C replication at all? But the strange setup aside, the effect itself is of course easily reproducible, it doesn't even require a concurrent test, an MTR test will do, just let B2C replication work first, and only then start A2C – events from A won't be replicated. I don't know if it was really designed to be so or just happened to be, either way it doesn't seem to contradict any existing documentation. I'll leave it to Elkin to decide whether it's a bug or not, and if it's to be fixed, then in which versions – feel free to adjust Fix Version/s accordingly. |
| Comment by Claudio Nanni [ 2018-06-12 ] |
|
C must replicate whatever is executed on B and A(directly), plain multisource. |
| Comment by Andrei Elkin [ 2018-07-11 ] |
|
> C must not replicate transactions coming from A that go via B. I've just spoken with Claudio to make sure I understood immediate tech requirements well. For such purpose we always have IGNORE_SERVER_IDS = (server_id_list) which I offered As to how @@replicate* combines with MSR and --gtid-ignore-duplicates as it is exemplified with provided tests I don't see actually a solid base to complain. Semantics of the combination does not match the aim which elenst pointed out. |
| Comment by Andrei Elkin [ 2018-07-11 ] |
|
The status is set back to Unconfirmed to transit to Closed when Claudio has confirmed |
| Comment by Andrei Elkin [ 2018-07-17 ] |
|
Set straight to Not-a-Bug as ideas provided to how to achieve aimed filtering. |