YUKI Hiroshi
null+****@clear*****
Tue Apr 21 15:34:25 JST 2015
YUKI Hiroshi 2015-04-21 15:34:25 +0900 (Tue, 21 Apr 2015) New Revision: f80f2259d5f7ab3e8234279290a873ebbcb57a54 https://github.com/droonga/droonga-engine/commit/f80f2259d5f7ab3e8234279290a873ebbcb57a54 Message: Do operations with restarting of services certainly Modified files: bin/droonga-engine-join Modified: bin/droonga-engine-join (+14 -12) =================================================================== --- bin/droonga-engine-join 2015-04-21 15:33:51 +0900 (faefdaf) +++ bin/droonga-engine-join 2015-04-21 15:34:25 +0900 (02443ca) @@ -221,51 +221,56 @@ module Droonga def set_source_node_role if absorber.source_node_suspendable? puts("Changing role of the source node...") + source_node_serf.do_and_wait_restart do source_node_serf.send_query("change_role", "node" => source_node.to_s, "role" => NodeRole::ABSORB_SOURCE) - wait_until_restarted(source_node) + end end @source_node_role_changed = true end def set_joining_node_role puts("Changing role of the joining node...") + joining_node_serf.do_and_wait_restart do joining_node_serf.send_query("change_role", "node" => joining_node.to_s, "role" => NodeRole::ABSORB_DESTINATION) - wait_until_restarted(joining_node) + end @joining_node_role_changed = true end def reset_source_node_role if absorber.source_node_suspendable? puts("Restoring role of the source node...") + source_node_serf.do_and_wait_restart do source_node_serf.send_query("change_role", "node" => source_node.to_s, "role" => NodeRole::SERVICE_PROVIDER) - wait_until_restarted(source_node.to_s) + end end @source_node_role_changed = false end def reset_joining_node_role puts("Restoring role of the joining node...") + joining_node_serf.do_and_wait_restart do joining_node_serf.send_query("change_role", "node" => joining_node.to_s, "role" => NodeRole::SERVICE_PROVIDER) - wait_until_restarted(joining_node.to_s) + end @joining_node_role_changed = false end def do_join puts("Joining new replica to the cluster...") + joining_node_serf.do_and_wait_restart do joining_node_serf.send_query("join", "node" => joining_node.to_s, "type" => "replica", "source" => source_node.to_s, "dataset" => dataset) - wait_until_restarted(joining_node) + end end def copy_data @@ -308,21 +313,23 @@ module Droonga def register_to_existing_nodes puts("Register new node to existing hosts in the cluster...") + source_node_serf.do_and_wait_restart do source_node_serf.send_query("add_replicas", "cluster_id" => source_cluster_id, "dataset" => dataset, "hosts" => [joining_node.host]) - wait_until_restarted(source_node) + end @node_registered = true end def unregister_from_existing_nodes puts("Unregister new node from existing hosts in the cluster...") + source_node_serf.do_and_wait_restart do source_node_serf.send_query("remove_replicas", "cluster_id" => source_cluster_id, "dataset" => dataset, "hosts" => [joining_node.host]) - wait_until_restarted(source_node) + end @node_registered = false end @@ -349,11 +356,6 @@ module Droonga reset_joining_node_role if @joining_node_role_changed reset_source_node_role if @source_node_role_changed end - - def wait_until_restarted(*nodes) - #TODO: wait for restarting of the given nodes. this should be done more safely. - sleep(30) - end end end -------------- next part -------------- HTML����������������������������...Download