• sjaakola's avatar
    MDEV-24327 wsrep XID checkpointing order with log_slave_updates=OFF · 87fa6d2c
    sjaakola authored
    If log_slave_updates==OFF, wsrep applier threads used to be configured
    with option: thd->variables.option_bits&= ~(OPTION_BIN_LOG);
    (i.e. like sql_log_bin=ON). And this was regardless of log-bin configuration.
    
    With this, having configuration of: --log-bin && --log-slave-updates=OFF,
    local threads used binlogging, but applier threads did not. And further:
    local threads went through binlog group commit, while applier threads did
    direct commits. This resulted in situation, where applier threads entered
    earlier in wsrep XID checkpointing, and could sync their wsrep XID out of order.
    Later local thread commit would see that higher seqno was already checkpointed,
    and fire an assert because of this.
    
    As a fix, applier threads are now forced to enable binlogging regardless of
    log-slave-updates configuration.
    
    This PR comes with new mtr test: galera.MDEV-24327, which causes a scenario
    where applier transaction is applied and committed while earlier local transaction
    is parked before commit order monitor enter. A buggy mariadb versoin would fail
    for assertion because of wsrep XID checkpoint order violation.
    87fa6d2c
wsrep_high_priority_service.cc 22.2 KB