Skip to content
  • Sven Sandberg's avatar
    b8092f2d
    WL#7083 step 3.7. GTID_MODE settable: Make commands accessing GTID_MODE safe... · b8092f2d
    Sven Sandberg authored
    WL#7083 step 3.7. GTID_MODE settable: Make commands accessing GTID_MODE safe for concurrent SET GTID_MODE.
    
    @sql/rpl_gtid.h
    - Require that get_gtid_mode() is used with a lock. Either the new
    lock gtid_mode_lock, or global_sid_lock.rdlock (or wrlock), or
    LOCK_msr_map, or mysql_bin_log.get_log_lock must be held.
    
    @sql/item_func.cc
    - Update wait_for_executed_gtid_set to use lock when reading gtid_mode
    - Update wait_for_sql_thread_after_gtids ot use lock when reading
    gtid_mode.
    
    @sql/mysqld.cc
    - Update main to use global_sid_lock.rdlock when reading gtid_mode.
    
    @sql/rpl_binlog_sender.cc
    - Update Binlog_sender::init to use global_sid_lock.rdlock when reading
    gtid_mode.
    
    @sql/rpl_gtid_execution.cc
    - Update gtid_reacquire_ownership_if_anonymous to use
    global_sid_lock.rdlock when reading gtid_mode.
    
    @sql/rpl_gtid_misc.cc
    - Implement the lock assertions for get_gtid_mode.
    
    @sql/rpl_gtid_state.cc
    - Update generate_automatic_gtid to use global_sid_lock.rdlock when
    reading gtid_mode.
    
    @sql/rpl_mi.cc
    - Update Master_info::read_info to use global_sid_lock.rdlock when
    reading gtid_mode.
    
    @sql/rpl_slave.cc
    - Update IO thread initialization code to use global_sid_lock.rdlock
    when reading gtid_mode.
    - Fix a strange condition where positions in heartbeat events are
    sanity-checked. This should not depend on gtid_mode.  Also remove
    check for mi->get_master_log_name() != NULL; this is redundant, since
    if it was NULL the previous memcmp would crash.
    - Update IO thread queueing code to use global_sid_lock.rdlock when
    reading gtid_mode.
    - Update CHANGE MASTER to use lock_msr_map when reading gtid_mode.
    
    @sql/sql_class.cc
    - Call gtid_post_statement_checks regardless of gtid_mode.
    
    @sql/sys_vars.cc
    - Update check_slave_skip_counter to use global_sid_lock.rdlock when
    reading gtid_mode.
    - Update check_enforce_gtid_consistency to use global_sid_lock.rdlock
    when reading gtid_mode.
    - Update check_gtid_next_list to use global_sid_lock.rdlock when reading
    gtid_mode.
    
    @sql/transaction.cc
    - Clear the thd->status & SERVER_STATUS_IN_TRANS bit regardless of
    gtid_mode.
    b8092f2d
    WL#7083 step 3.7. GTID_MODE settable: Make commands accessing GTID_MODE safe...
    Sven Sandberg authored
    WL#7083 step 3.7. GTID_MODE settable: Make commands accessing GTID_MODE safe for concurrent SET GTID_MODE.
    
    @sql/rpl_gtid.h
    - Require that get_gtid_mode() is used with a lock. Either the new
    lock gtid_mode_lock, or global_sid_lock.rdlock (or wrlock), or
    LOCK_msr_map, or mysql_bin_log.get_log_lock must be held.
    
    @sql/item_func.cc
    - Update wait_for_executed_gtid_set to use lock when reading gtid_mode
    - Update wait_for_sql_thread_after_gtids ot use lock when reading
    gtid_mode.
    
    @sql/mysqld.cc
    - Update main to use global_sid_lock.rdlock when reading gtid_mode.
    
    @sql/rpl_binlog_sender.cc
    - Update Binlog_sender::init to use global_sid_lock.rdlock when reading
    gtid_mode.
    
    @sql/rpl_gtid_execution.cc
    - Update gtid_reacquire_ownership_if_anonymous to use
    global_sid_lock.rdlock when reading gtid_mode.
    
    @sql/rpl_gtid_misc.cc
    - Implement the lock assertions for get_gtid_mode.
    
    @sql/rpl_gtid_state.cc
    - Update generate_automatic_gtid to use global_sid_lock.rdlock when
    reading gtid_mode.
    
    @sql/rpl_mi.cc
    - Update Master_info::read_info to use global_sid_lock.rdlock when
    reading gtid_mode.
    
    @sql/rpl_slave.cc
    - Update IO thread initialization code to use global_sid_lock.rdlock
    when reading gtid_mode.
    - Fix a strange condition where positions in heartbeat events are
    sanity-checked. This should not depend on gtid_mode.  Also remove
    check for mi->get_master_log_name() != NULL; this is redundant, since
    if it was NULL the previous memcmp would crash.
    - Update IO thread queueing code to use global_sid_lock.rdlock when
    reading gtid_mode.
    - Update CHANGE MASTER to use lock_msr_map when reading gtid_mode.
    
    @sql/sql_class.cc
    - Call gtid_post_statement_checks regardless of gtid_mode.
    
    @sql/sys_vars.cc
    - Update check_slave_skip_counter to use global_sid_lock.rdlock when
    reading gtid_mode.
    - Update check_enforce_gtid_consistency to use global_sid_lock.rdlock
    when reading gtid_mode.
    - Update check_gtid_next_list to use global_sid_lock.rdlock when reading
    gtid_mode.
    
    @sql/transaction.cc
    - Clear the thd->status & SERVER_STATUS_IN_TRANS bit regardless of
    gtid_mode.
Loading