Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MDEV-28378: Don't hang trying to peek log event past the end of log #407

Draft
wants to merge 3 commits into
base: 10.4
Choose a base branch
from

Commits on Mar 6, 2024

  1. MDEV-32633: Fix Galera cluster <-> native replication interaction

    It's possible to establish Galera multi-cluster setups connected
    through the native replication when every Galera cluster is configured
    to have a separate domain ID.
    For this setup to work, we need to replace domain ID values in generated
    GTID events when they are written at transaction commit to the values
    configured by Wsrep replication.
    
    At the same time, it's possible that the GTID event already contains
    a correct domain ID if it comes through the native replication from
    another Galera cluster.
    In this case, when such an event is applied either through a native
    replication slave thread or through Wsrep applier, we write GTID event
    on transaction start and avoid writing it during transaction commit.
    
    The code contained multiple problems that were fixed:
    - applying GTID events didn't work because it's applied without a
    running server transaction and Wsrep transaction was not started
    - GTID event generation on transaction start didn't contain proper
    "standalone" and "is_transactional" flags that the original applied
    GTID event contained
    - condition determining that GTID event is written on transaction start
    to avoid writing it on commit relied on the fact that the GTID event
    is the first found in transaction/statement caches, which wasn't the
    case and resulted in duplicate GTID events written
    - instead of relying on the caches to find a GTID event, a simple check
    is introduced that follows the exact rules for checking if event is
    written at transaction start as described above
    - the test case is improved to check that exact GTID events are
    applied after two Galera clusters have synced.
    denis-protivensky committed Mar 6, 2024
    Configuration menu
    Copy the full SHA
    107147f View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2024

  1. Configuration menu
    Copy the full SHA
    e74f986 View commit details
    Browse the repository at this point in the history

Commits on Mar 20, 2024

  1. MDEV-28378: Don't hang trying to peek log event past the end of log

    While applying CTAS log event, we peek the relay log to see if CTAS
    contains inserted rows or if it's empty.
    The peek function didn't check for end-of-file condition when tried to
    get the next event from the log, and thus it hanged.
    
    The fix includes checking for end-of-file while peeking for log events
    and considering returned XID_EVENT value as a sign of an empty CTAS.
    denis-protivensky committed Mar 20, 2024
    Configuration menu
    Copy the full SHA
    885562f View commit details
    Browse the repository at this point in the history