• unknown's avatar
    BUG#30435 loading large LOAD DATA INFILE breaks slave with · 40d89c44
    unknown authored
              read_buffer_size set on master
    BUG#33413 show binlog events fails if binlog has event size of close
              to max_allowed_packet
    
    
    The size of Append_block replication event was determined solely by
    read_buffer_size whereas the rest of replication code deals with
    max_allowed_packet.
    When the former parameter was set to larger than the latter there were
    two artifacts: the master could not read events from binlog;
    show master events did not show.
    
    Fixed with 
    - fragmenting the used io-cached buffer into pieces each size of less
      than max_allowed_packet (bug#30435)
    - incrementing show-binlog-events handling thread's max_allowed_packet
      with the max estimated for the replication header size
    
    
    include/my_sys.h:
      accessor-macros added in order not to mess with the io cache's implementation
      details in code that merely exploits the io-cache.
    sql/sql_repl.cc:
      BUG#33413: incrementing thd->variables.max_allowed_packet with 
      the max estimation for the replication header size (from bug#19402);
      refactoring log_loaded_block() to fragment the io_cache buffer in case
       read_buffer_size > max_allowed_packet.
    mysql-test/r/rpl_loaddata_map.result:
      New BitKeeper file ``mysql-test/r/rpl_loaddata_map.result''
    mysql-test/t/rpl_loaddata_map-master.opt:
      specific options to trigger  BUG#30435,  BUG#33413 situations
    mysql-test/t/rpl_loaddata_map-slave.opt:
      max_allowed_packet to be compatible with the master's version.
    mysql-test/t/rpl_loaddata_map.test:
      regression tests for two bugs.
    40d89c44
sql_repl.cc 47.3 KB