mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-5262: Missing retry after temp error in parallel replication
Start implementing that an event group can be re-tried in parallel replication if it fails with a temporary error (like deadlock). Patch is very incomplete, just some very basic retry works. Stuff still missing (not complete list): - Handle moving to the next relay log file, if event group to be retried spans multiple relay log files. - Handle refcounting of relay log files, to ensure that we do not purge a relay log file and then later attempt to re-execute events out of it. - Handle description_event_for_exec - we need to save this somehow for the possible retry - and use the correct one in case it differs between relay logs. - Do another retry attempt in case the first retry also fails. - Limit the max number of retries. - Lots of testing will be needed for the various edge cases.
This commit is contained in:
committed by
Kristian Nielsen
parent
2b4b857d51
commit
b0b60f2498
@ -106,11 +106,15 @@ struct rpl_parallel_thread {
|
||||
queued_size-= dequeue_size;
|
||||
}
|
||||
|
||||
queued_event *get_qev_common(Log_event *ev, ulonglong event_size);
|
||||
queued_event *get_qev(Log_event *ev, ulonglong event_size,
|
||||
Relay_log_info *rli);
|
||||
queued_event *retry_get_qev(Log_event *ev, queued_event *orig_qev,
|
||||
const char *relay_log_name,
|
||||
ulonglong event_pos, ulonglong event_size);
|
||||
void free_qev(queued_event *qev);
|
||||
rpl_group_info *get_rgi(Relay_log_info *rli, Gtid_log_event *gtid_ev,
|
||||
rpl_parallel_entry *e);
|
||||
rpl_parallel_entry *e, ulonglong event_size);
|
||||
void free_rgi(rpl_group_info *rgi);
|
||||
group_commit_orderer *get_gco(uint64 wait_count, group_commit_orderer *prev);
|
||||
void free_gco(group_commit_orderer *gco);
|
||||
|
Reference in New Issue
Block a user