• Sujatha's avatar
    MDEV-22530: Aborting OPTIMIZE TABLE still logs in binary log and replicates to the Slave server. · 88c7a58e
    Sujatha authored
    Problem:
    ========
    Aborting OPTIMIZE TABLE still logs in binary logs and replicates to the
    Slave server. "Optimize table" command under execution, is killed by using
    "Ctrl-C" as shown below.
    
    MariaDB [test]> optimize table t2;
    ^CCtrl-C -- query killed. Continuing normally.
    
    In spite of query execution being interrupted the query gets written to
    binary log.
    
    Analysis:
    ========
    Admin command execution logic is not handling KILL command, hence it
    ignores the KILL command and completes its execution.
    
    Fix:
    ===
    Check for thread killed notification, during admin command execution and
    handle it. If thread kill occurs prior to any table modification the query
    will not be written to binary log. If kill happens after at least one table
    is modified then the query will be written to binary log. Ex: command in
    execution is 'OPTIMIZE TABLE t1,t2' and the thread kill happens after t1
    table is modified then 'OPTIMIZE TABLE t1,t2' will be written to binary log
    as admin commands will not make the slave to diverge from master.
    88c7a58e
binlog_admin_cmd_kill.test 2.99 KB