Navigation Menu

Skip to content

Commit

Permalink
Shutdown internal message receiver gracefully
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 23, 2015
1 parent 2e3b979 commit 4fa8140
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 15 deletions.
26 changes: 19 additions & 7 deletions lib/droonga/command/droonga_engine_service.rb
Expand Up @@ -139,10 +139,21 @@ def create_internal_message_receiver
end
end

def shutdown_internal_message_receiver
def shutdown_internal_message_receiver_gracefully
if @internal_message_receiver.nil?
yield
return
end
@internal_message_receiver, receiver = nil, @internal_message_receiver
receiver.shutdown_gracefully do
yield
end
end

def shutdown_internal_message_receiver_immediately
return if @internal_message_receiver.nil?
@internal_message_receiver, receiver = nil, @internal_message_receiver
receiver.shutdown
receiver.shutdown_immediately
end

def run_engine
Expand Down Expand Up @@ -234,10 +245,11 @@ def stop_gracefully
@engine.stop_gracefully do
logger.trace("stop_gracefully: ready to stop workers")
shutdown_worker_process_agent
shutdown_internal_message_receiver
logger.trace("stop_gracefully: done",
:n_rest_watchers => @loop.watchers.size,
:rest_watchers => @loop.watchers)
shutdown_internal_message_receiver_gracefully do
logger.trace("stop_gracefully: done",
:n_rest_watchers => @loop.watchers.size,
:rest_watchers => @loop.watchers)
end
end
end
end
Expand All @@ -246,7 +258,7 @@ def stop_gracefully
def stop_immediately
shutdown_worker_process_agent
@receiver.stop_immediately
shutdown_internal_message_receiver
shutdown_internal_message_receiver_immediately
@engine.stop_immediately
@loop.stop
end
Expand Down
35 changes: 27 additions & 8 deletions lib/droonga/internal_fluent_message_receiver.rb
Expand Up @@ -38,12 +38,22 @@ def start
[@host, @port]
end

def shutdown
logger.trace("shutdown: start")
shutdown_message_receiver
def shutdown_gracefully
logger.trace("shutdown_gracefully: start")
shutdown_heartbeat_socket
shutdown_listen_socket
logger.trace("shutdown: done")
shutdown_message_receiver do
yield
logger.trace("shutdown_gracefully: done")
end
end

def shutdown_immediately
logger.trace("shutdown_immediately: start")
shutdown_heartbeat_socket
shutdown_listen_socket
shutdown_message_receiver_immediately
logger.trace("shutdown_immediately: done")
end

private
Expand All @@ -56,6 +66,7 @@ def start_listen_socket

def shutdown_listen_socket
logger.trace("shutdown_listen_socket: start")
@listen_socket.close
logger.trace("shutdown_listen_socket: done")
end

Expand All @@ -73,6 +84,7 @@ def start_heartbeat_socket

def shutdown_heartbeat_socket
logger.trace("shutdown_heartbeat_socket: start")
@heartbeat_socket.close
logger.trace("shutdown_heartbeat_socket: done")
end

Expand All @@ -87,11 +99,18 @@ def start_message_receiver
logger.trace("start_heartbeat_socket: done")
end

# TODO: Use stop_gracefully/stop_immediately interface
def shutdown_message_receiver
logger.trace("shutdown_message_receiver: start")
def shutdown_message_receiver_gracefully
logger.trace("shutdown_message_receiver_gracefully: start")
@message_receiver.stop_gracefully do
yield
logger.trace("shutdown_message_receiver_gracefully: done")
end
end

def shutdown_message_receiver_immediately
logger.trace("shutdown_message_receiver_immediately: start")
@message_receiver.stop_immediately
logger.trace("shutdown_message_receiver: done")
logger.trace("shutdown_message_receiver_immediately: done")
end

def log_tag
Expand Down

0 comments on commit 4fa8140

Please sign in to comment.