=== modified file 'Percona-Server/storage/innobase/trx/trx0sys.cc' --- Percona-Server/storage/innobase/trx/trx0sys.cc 2013-09-05 13:50:58 +0000 +++ Percona-Server/storage/innobase/trx/trx0sys.cc 2013-09-30 12:49:45 +0000 @@ -358,10 +358,12 @@ mtr_start(&mtr);
sys_header = trx_sysf_get(&mtr); - - if ((magic = mach_read_from_4(sys_header + TRX_SYS_WSREP_XID_INFO - + TRX_SYS_WSREP_XID_MAGIC_N_FLD)) - != TRX_SYS_WSREP_XID_MAGIC_N) { + magic = mach_read_from_4(sys_header + TRX_SYS_WSREP_XID_INFO + TRX_SYS_WSREP_XID_MAGIC_N_FLD); + + + if (magic != TRX_SYS_WSREP_XID_MAGIC_N) { + mtr_commit(&mtr); + mtr_start(&mtr); memset(xid, 0, sizeof(*xid)); xid->formatID = -1; trx_sys_update_wsrep_checkpoint(xid, &mtr);
is better (since mtr_commit is avoided twice)
but it is much better to not query sys_header again in trx_sys_update_wsrep_checkpoint
=== modified file 'Percona- Server/ storage/ innobase/ trx/trx0sys. cc' Server/ storage/ innobase/ trx/trx0sys. cc 2013-09-05 13:50:58 +0000 Server/ storage/ innobase/ trx/trx0sys. cc 2013-09-30 12:49:45 +0000
--- Percona-
+++ Percona-
@@ -358,10 +358,12 @@
mtr_start(&mtr);
sys_header = trx_sysf_get(&mtr); from_4( sys_header + TRX_SYS_ WSREP_XID_ INFO WSREP_XID_ MAGIC_N_ FLD)) WSREP_XID_ MAGIC_N) { from_4( sys_header + TRX_SYS_ WSREP_XID_ INFO + TRX_SYS_ WSREP_XID_ MAGIC_N_ FLD); WSREP_XID_ MAGIC_N) {
memset( xid, 0, sizeof(*xid));
xid- >formatID = -1;
trx_ sys_update_ wsrep_checkpoin t(xid, &mtr);
-
- if ((magic = mach_read_
- + TRX_SYS_
- != TRX_SYS_
+ magic = mach_read_
+
+
+ if (magic != TRX_SYS_
+ mtr_commit(&mtr);
+ mtr_start(&mtr);
is better (since mtr_commit is avoided twice)
but it is much better to not query sys_header again in trx_sys_ update_ wsrep_checkpoin t