mirror of
https://github.com/codership/wsrep-lib.git
synced 2026-10-23 09:48:57 +03:00
recording GTID checkpoint before leaving commit monitor
This fix relates to github bug #607, where wrong wsrep XID store order caused assert in innodb wsrep checkpointing. Wrong store order happened after certification failure, where the failing transaction rushed to record wsrep XID bebfore the offending applier transaction. This race condition was possible because the applier released first commit monitor and after that recorded wsrep XID as innodb checkpoint. The fix for this issue forces all wsrep GTID checkpointing to happen inside commit monitor. Hence, a fix for this wsrep-lib routine was needed, to align with the checkpoinnting logic, and record checkpoint just before leaving commit monitor.
This commit is contained in:
@@ -528,6 +528,7 @@ int wsrep::transaction::ordered_commit()
|
||||
assert(state() == s_committing);
|
||||
assert(ordered());
|
||||
client_service_.debug_sync("wsrep_before_commit_order_leave");
|
||||
server_service_.set_position(client_service_, ws_meta_.gtid());
|
||||
int ret(provider().commit_order_leave(ws_handle_, ws_meta_,
|
||||
apply_error_buf_));
|
||||
client_service_.debug_sync("wsrep_after_commit_order_leave");
|
||||
|
||||
Reference in New Issue
Block a user