3212 Andrei Elkin 2010-11-18
Recovery related. Prototyping the worker RLI instantiation, to be elaborated on.
3211 Andrei Elkin 2010-11-18
Extending the wl#5563 prototype gradually.
This commit addresses:
1. recovery interface (a new Worker rli plus rli->gaq and pseudo-code for checkpoint
to update GAQ and the central RLI recovery table.
Wrt rli, C and W execute do_apply_event(c_rli) where c_rli is the central
instance. C executes update_pos(c_rli), but W update_pos(w_rli).
- decreased processing time for rpl_parallel, serial.
Enhance Log_event::get_slave_worker_id() to classify events by set of parallelization properties;
Presence of a property in an event forces some actions both on C and W side.
en_queue etc are prepared to turn into circular_buffer_queue methods.
Pseudo-coded numerious todo:s wrt to low-level-design implementation.
Deployed changes due to Worker private rli.
Annotated on Deferred Array for B,p,r property events.
delete ev is moved from C to W which is fault-prone but it could not be kept
any longer as a part of de_queue() that transits into cir_buf_queue class.
removed `soiled' that was used to make delete ev run safely.
Added Log_event methods identifying the parallelization properties, incl
- contains_partition_info() to identify events containing
info to be processed by the partition hash func
- also updated the list of only_serial().
Only Coordinator can destroy Workers dynarray;
Relay_log_info::get_current_worker() turned out to become more complicated, see comments;
Reminder to migrate rli->future... into ev-> future_event_relay_log_pos
which would make Worker to find the value out the event's context;
Prototyped // w->flush_info() in stmt_done;
The worker RLI has `this_worker' pointing to the actual worker instance.
Annotated with fine details APH etc implementation.
Trasformed earlier queue struct into a family of classes.
Recovery interface: last_group_done_index of Slave_worker to be filled in with an index
of GAQ queue by W. To poll the value by C at checkpoint.
Added CGEP to W context (sim to CGAP of C).
Simplified the Worker poll.
Deployed worker rli initialization.
Recovery: rli->gaq is instantiated by C at worker poll activization.
Recovery: pseudo-code for checkpoint in next_event().
editted help lines for slave_max_pending_jobs.
=== modified file 'sql/rpl_slave.cc'
--- a/sql/rpl_slave.cc 2010-11-18 14:00:52 +0000
+++ b/sql/rpl_slave.cc 2010-11-18 14:50:54 +0000
@@ -3524,7 +3524,13 @@ pthread_handler_t handle_slave_worker(vo
// fixme: experimenting to make Workers to run ev->update_pos(w->w_rli)
- w->w_rli= Rpl_info_factory::create_rli(RLI_REPOSITORY_FILE, FALSE);
+ // fixme: a real hack! part of Rpl_info_factory::create_rli(RLI_REPOSITORY_FILE, FALSE);
+ w->w_rli= new Relay_log_info(FALSE,
w->w_rli->workers= rli->workers; // shallow copying is sufficient
Attachment: [text/bzr-bundle] email@example.com
|• bzr push into mysql-next-mr.crash-safe branch (andrei.elkin:3211 to 3212)WL#5569 WL#5599||Andrei Elkin||19 Nov|