Skip to content
  • Andrei Elkin's avatar
    a99ce7c2
    wl#2540 replication events checksum · a99ce7c2
    Andrei Elkin authored
    The final conceptual patch addresses the 1st item for the last commit todo.
    That includes
    
    a. extending rpl_checksum to demonstrate slave execution stability 
    in face of binary and relay-log rotations in the context of master and slave
    having arbitrary (possibly different) server's checksum algorithms.
    
    b. prior the test to pass some piece of code was clean up to simplify logics of
       need_checksum() and propagation of the relay-log checksum Alg from one
       master-slave session to the other.
    
    c. binlog_checksum is converted from bool to enum forcing changes in external and internal
        interfaces as well as the master-slave binlog-checksum handshake.
    
    This patch leaves the reliable FD issue out to be addresses in a separate piece of work.
    That will implement an idea described on WL#2540 which is about
    `we need to distinguish between a checksummed-and-corrupted FD and not checksummed'.
    
    TODO:
    
    1. extend the test base to verify all cover cases of OM -> NS and NM -> OS
    2. merge with bug#49741
    
    
    Fine details of changes per file:
    
    
    
    mysql-test/extra/rpl_tests/rpl_log.test
    
    	gave out to wait for  bug#49741 merge to edit myself
    
    
    mysql-test/include/have_binlog_checksum_off.inc
    
            a new guard to require by tests which mess with simulation 
    	incompatible checksum ways.
    
    
    mysql-test/suite/rpl/t/rpl_checksum.test
     
    	to demonstrate slave execution stability in face of binary and
            relay-log rotations in the context of master and slave having
            arbitrary (possibly different) server's checksum algorithms.
    
    
    sql/log.cc
    
    	Addressing, binlog-checksum bool-to-enum-conversion, RL-checksum placeholder logics
    	simplification, Log_event::need_checksum() correcting and relaxing.
    
     sql/log.h
    
            Commenting on the definition of relay_log_checksum_alg as the placeholder
    	of  Relay-LoG  checksum alg value.
    
    sql/log_event.cc
    
           	Addressing, binlog-checksum bool-to-enum-conversion, RL-checksum placeholder logics
    	simplification, Log_event::need_checksum() correcting and relaxing.
    
     sql/rpl_mi.h
    sql/rpl_mi.cc
    
             RL-checksum placeholder logics simplification. The last seen value of
    	 FD_m.A (master's FD checksum alg) is stored in relay_log's member right
    	 upon receiving the event. That makes unnecessary ealier ramped up
    	 last_master_checksum_alg.
    
    sql/mysqld.c
    sql/mysql_priv.h
     sql/log_event.h
    
            Addressing, binlog-checksum bool-to-enum-conversion.
    
    
    sql/set_var.h
    
    	 Addressing binlog-checksum bool-to-enum-conversion.
    	 *Notice* change (private->protected for `value' member) in a base class 
    	 which is similar to one done ago to  sys_var_set.
    
    
     sql/slave.cc
    
            Addressing binlog-checksum bool-to-enum-conversion incl master-slave handshake,
    	equality of FD_q.A with RL.checksum_alg.
    	
    	
    sql/sql_repl.cc
    
    	Addressing binlog-checksum bool-to-enum-conversion via
    	redifing the binlog-checksum sys_var class.
    a99ce7c2
    wl#2540 replication events checksum
    Andrei Elkin authored
    The final conceptual patch addresses the 1st item for the last commit todo.
    That includes
    
    a. extending rpl_checksum to demonstrate slave execution stability 
    in face of binary and relay-log rotations in the context of master and slave
    having arbitrary (possibly different) server's checksum algorithms.
    
    b. prior the test to pass some piece of code was clean up to simplify logics of
       need_checksum() and propagation of the relay-log checksum Alg from one
       master-slave session to the other.
    
    c. binlog_checksum is converted from bool to enum forcing changes in external and internal
        interfaces as well as the master-slave binlog-checksum handshake.
    
    This patch leaves the reliable FD issue out to be addresses in a separate piece of work.
    That will implement an idea described on WL#2540 which is about
    `we need to distinguish between a checksummed-and-corrupted FD and not checksummed'.
    
    TODO:
    
    1. extend the test base to verify all cover cases of OM -> NS and NM -> OS
    2. merge with bug#49741
    
    
    Fine details of changes per file:
    
    
    
    mysql-test/extra/rpl_tests/rpl_log.test
    
    	gave out to wait for  bug#49741 merge to edit myself
    
    
    mysql-test/include/have_binlog_checksum_off.inc
    
            a new guard to require by tests which mess with simulation 
    	incompatible checksum ways.
    
    
    mysql-test/suite/rpl/t/rpl_checksum.test
     
    	to demonstrate slave execution stability in face of binary and
            relay-log rotations in the context of master and slave having
            arbitrary (possibly different) server's checksum algorithms.
    
    
    sql/log.cc
    
    	Addressing, binlog-checksum bool-to-enum-conversion, RL-checksum placeholder logics
    	simplification, Log_event::need_checksum() correcting and relaxing.
    
     sql/log.h
    
            Commenting on the definition of relay_log_checksum_alg as the placeholder
    	of  Relay-LoG  checksum alg value.
    
    sql/log_event.cc
    
           	Addressing, binlog-checksum bool-to-enum-conversion, RL-checksum placeholder logics
    	simplification, Log_event::need_checksum() correcting and relaxing.
    
     sql/rpl_mi.h
    sql/rpl_mi.cc
    
             RL-checksum placeholder logics simplification. The last seen value of
    	 FD_m.A (master's FD checksum alg) is stored in relay_log's member right
    	 upon receiving the event. That makes unnecessary ealier ramped up
    	 last_master_checksum_alg.
    
    sql/mysqld.c
    sql/mysql_priv.h
     sql/log_event.h
    
            Addressing, binlog-checksum bool-to-enum-conversion.
    
    
    sql/set_var.h
    
    	 Addressing binlog-checksum bool-to-enum-conversion.
    	 *Notice* change (private->protected for `value' member) in a base class 
    	 which is similar to one done ago to  sys_var_set.
    
    
     sql/slave.cc
    
            Addressing binlog-checksum bool-to-enum-conversion incl master-slave handshake,
    	equality of FD_q.A with RL.checksum_alg.
    	
    	
    sql/sql_repl.cc
    
    	Addressing binlog-checksum bool-to-enum-conversion via
    	redifing the binlog-checksum sys_var class.
Loading