From: Andrei Elkin Date: February 21 2012 12:36am Subject: bzr push into mysql-trunk-wl3584 branch (andrei.elkin:3657 to 3658) WL#3584 List-Archive: http://lists.mysql.com/commits/142995 Message-Id: <201202210036.q1L0aOqT008924@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3658 Andrei Elkin 2012-02-21 wl#3584 GTID relaxing conditions for HB info validation. Master can skip transactions that slave already got and this fact is never reported so the vanilla GTID-less logics fail because implicitly MI.pos should include the size of the skipped transactions. Until HB does not carry the skipped size validation only condiders monotonicity, i.e HB.pos >= MI.pos when gtid_mode is ON. modified: sql/rpl_slave.cc 3657 Luis Soares 2012-02-18 [merge] Merging mysql-trunk --> mysql-trunk-wl3584. Manually resolved conflicts =========================== Text conflict in sql/sql_class.cc added: mysql-test/suite/binlog/r/binlog_server_start_options.result mysql-test/suite/binlog/t/binlog_server_start_options.test mysql-test/suite/innodb/r/innodb-blob.result mysql-test/suite/innodb/t/innodb-blob.test sql/md5.cc sql/sha1.cc modified: include/my_md5.h include/sha1.h libmysql/CMakeLists.txt mysql-test/r/type_newdecimal.result mysql-test/r/type_temporal_fractional.result mysql-test/t/type_newdecimal.test mysql-test/t/type_temporal_fractional.test mysys/CMakeLists.txt mysys/md5.c mysys/mf_format.c mysys/sha1.c sql/CMakeLists.txt sql/handler.cc sql/item.h sql/item_func.cc sql/item_func.h sql/item_strfunc.cc sql/mysqld.cc sql/opt_range.cc sql/password.c sql/rpl_info_factory.cc sql/sql_class.cc sql/sql_plugin.cc sql/sys_vars.cc sql/table.cc storage/innobase/btr/btr0btr.cc storage/innobase/btr/btr0cur.cc storage/innobase/buf/buf0dblwr.cc storage/innobase/fsp/fsp0fsp.cc storage/innobase/ibuf/ibuf0ibuf.cc storage/innobase/include/btr0btr.h storage/innobase/include/btr0cur.h storage/innobase/include/btr0cur.ic storage/innobase/include/fsp0fsp.h storage/innobase/include/mtr0mtr.h storage/innobase/include/mtr0mtr.ic storage/innobase/include/trx0rec.ic storage/innobase/include/trx0undo.h storage/innobase/include/univ.i storage/innobase/mtr/mtr0mtr.cc storage/innobase/row/row0ins.cc storage/innobase/row/row0upd.cc storage/innobase/srv/srv0start.cc storage/innobase/trx/trx0rec.cc storage/innobase/trx/trx0trx.cc storage/innobase/trx/trx0undo.cc === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2012-02-17 19:46:49 +0000 +++ b/sql/rpl_slave.cc 2012-02-21 00:34:41 +0000 @@ -5955,7 +5955,13 @@ static int queue_event(Master_info* mi,c if ((memcmp(const_cast(mi->get_master_log_name()), hb.get_log_ident(), hb.get_ident_len()) && mi->get_master_log_name() != NULL) - || mi->get_master_log_pos() != hb.log_pos) + || ((mi->get_master_log_pos() != hb.log_pos && gtid_mode == 0) || + /* + When Gtid mode is on only monotocity can be claimed. + Todo: enhance HB event with the skipped events size + and to convert HB.pos == MI.pos to HB.pos - HB.skip_size == MI.pos + */ + (mi->get_master_log_pos() > hb.log_pos))) { /* missed events of heartbeat from the past */ error= ER_SLAVE_HEARTBEAT_FAILURE; No bundle (reason: useless for push emails).