Created
May 12, 2017 19:05
-
-
Save jrafanie/e872383ca7eede3e9fc82f71483c939d to your computer and use it in GitHub Desktop.
ManageIQ worker creation and start
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
MiqServer.start | |
... | |
server.start [1] | |
... | |
server.monitor_loop [2] | |
[1] server.start | |
deactivate/activate roles | |
monitor_servers and roles | |
sync active roles | |
... | |
start_drb_server | |
sync_workers [5] (one time sync_workers) | |
wait for workers | |
"started" | |
[2] server.monitor_loop | |
loop { monitor[3]; sleep } | |
[3] server.monitor | |
heartbeat | |
... | |
monitor_workers [4] | |
... | |
[4] server.monitor_workers | |
... | |
sync_workers [5] | |
check not responding/pending stop | |
post messages for workers | |
... | |
[5] server.sync_workers | |
self.class.monitor_class_names.each {|klass| klass.constantize.sync_workers[6] } | |
#monitor_class_names is a harcoded constant list of all of the workers classes | |
... | |
[6] MiqWorker#sync_workers (for each worker class) | |
... | |
MiqWorker.start_worker [7] | |
[7] MiqWorker.start_worker | |
... | |
w = create_worker_record (basically .create) | |
w.start [8] | |
[8] MiqWorker#start | |
start_runner [9] | |
[9] MiqWorker#start_runner (each worker class can specify how they want to start their runner, default is to fork) | |
MiqWorker.before_fork | |
pid = fork { MiqWorker.after_fork; MiqWorker::Runner.start_worker [10] } | |
Process.detach(pid) | |
[10] MiqWorker::Runner.start_worker | |
new.start [11] | |
[11] MiqWorker::Runner#start | |
prepare [12] | |
run [13] | |
[12] MiqWorker::Runner#prepare | |
... | |
started_worker_record (sets row to 'started') | |
... | |
do_before_work_loop | |
[13] MiqWorker::Runner#run / do_work_loop | |
loop do | |
hearbeat | |
do_work | |
... | |
sleep | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment