• Sujatha's avatar
    MDEV-14203: rpl.rpl_extra_col_master_myisam,... · b3dd95e0
    Sujatha authored
    MDEV-14203: rpl.rpl_extra_col_master_myisam, rpl.rpl_slave_load_tmpdir_not_exist failed in buildbot with a warning
    
    Problem:
    =======
    rpl.rpl_slave_load_tmpdir_not_exist 'stmt' w3 [ fail ]  Found warnings/errors
    in server log file!
    
    Test ended at 2017-09-27 20:34:55
    [Warning] Master is configured to log replication events with checksum, but
    will not send such events to slaves that cannot process them
    ^ Found warnings in /mnt/buildbot/build/mariadb-10.2.10/mysql-test/var/3/log/mysqld.1.err
    ok
    Analysis:
    ========
    When slave tries to connect to master 'get_master_version_and_clock' function
    is invoked to perform elaborated slave-master handshake. During this process
    slave server queries master server, to know if it is checksum aware and at the
    same time master is notified about its CRC-awareness. The master's side
    instant value of @@global.binlog_checksum is stored in the dump thread's
    uservar area as well as cached locally to become known in consensus by master
    and slave.
    
    Post hand-shake slave requests master for binlog dump. It sends
    'COM_BINLOG_DUMP'. This command is sent to master by 'cli_advanced_command'
    call. If there is some temporary network failure during this request_dump
    call, 'end_server' is invoked to close the current connection between master
    and slave. Upon connection close the dump thread on the master gets terminated
    and it clears the 'uservar' data it got through master-slave handshake.
    
    The 'COM_BINLOG_DUMP' command is sent once again without master-slave
    handshake. Since the checksum data is not available with new dump thread a
    warning gets reported.
    
    Fix:
    ===
    Upon network write error donot attempt reconnect, proceed to master-slave
    handshake. This ensures that master is aware of slave's capability to use
    checksums.
    b3dd95e0
slave.cc 263 KB