summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAndrei Elkin <andrei.elkin@mariadb.com>2019-11-06 17:05:58 +0200
committerAndrei Elkin <andrei.elkin@mariadb.com>2019-11-10 16:16:37 +0200
commit13db50fc03e7312e6c01b06c7e4af69f69ba5382 (patch)
tree3a02af099e4e4d32f6d4c007895cb16b0447b316 /scripts
parentdfd2d3d861fa7fad6747489dbbd173b7f680f44d (diff)
downloadmariadb-git-13db50fc03e7312e6c01b06c7e4af69f69ba5382.tar.gz
MDEV-19376 Repl_semi_sync_master::commit_trx assertion failure: ... || !m_active_tranxs->is_tranx_end_pos(trx_wait_binlog_name, trx_wait_binlog_pos)
The assert indicates that the current transaction got caught uncleaned from the semisync master's cache when it is signaled to proceed upon its ack receive. The reason of missed cleanup turns out to be a flaw in the gtid connect mode. A submitted by connecting slave value of its last received event's binlog file *name* was adopted into {{Repl_semi_sync_master::m_reply_file_name}} as a part of semisync initialization. Notice that the initialization still refines the position part of the submitted last received event's binlog coordinates. The master side binlog filename:pos refinement is specific to the gtid connect mode for purpose of computing the latest binlog file to resume slave feeding from. Effectively in the gtid connect mode the computed resumption filename:pos may appear smaller in which case a new post-connect time committing transaction may be logged with its filename:pos also less than the submitted coordinates and that triggers the assert. Fixed with making the semisync initialization to use the refined filename:pos. It is guaranteed to be less than any new generated transaction's binlog:pos.
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions