Navigation Menu

Skip to content

Commit

Permalink
Stop serf agent at first on the shutdown process.
Browse files Browse the repository at this point in the history
Otherwise, other nodes can try to send messages to dead engines.
  • Loading branch information
piroor committed Apr 20, 2015
1 parent 0e75744 commit eb090bb
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions lib/droonga/command/droonga_engine.rb
Expand Up @@ -470,25 +470,30 @@ def trap_signals

def stop_gracefully
logger.trace("stop_gracefully: start")
logger.trace("stop_gracefully: stopping serf agent")
stop_serf do
logger.trace("stop_gracefully: stopping command runner")
@command_runner.stop
logger.trace("stop_gracefully: stopping cluster_state_observer")
@cluster_state_observer.stop
logger.trace("stop_gracefully: stopping catalog_observer")
@catalog_observer.stop
logger.trace("stop_gracefully: stopping restart_observer")
@restart_observer.stop
stop_serf
@service_runner.stop_gracefully
logger.trace("stop_gracefully: completely done")
end
logger.trace("stop_gracefully: done")
end

def stop_immediately
stop_serf do
@command_runner.stop
@cluster_state_observer.stop
@catalog_observer.stop
@restart_observer.stop
stop_serf
@service_runner.stop_immediately
end
end

def restart_graceful
Expand Down Expand Up @@ -547,14 +552,17 @@ def start_serf
@serf_agent = @serf.run_agent(@loop)
end

def stop_serf
def stop_serf(&block)
logger.trace("stop_serf: start")
begin
@serf.leave
rescue Droonga::Serf::Command::Failure
logger.error("Failed to leave from Serf cluster: #{$!.message}")
end
@serf_agent.stop
@serf_agent.stop do
logger.trace("stop_serf: serf agent stopped")
yield
end
logger.trace("stop_serf: done")
end

Expand Down

0 comments on commit eb090bb

Please sign in to comment.