Navigation Menu

Skip to content

Commit

Permalink
Refresh conenction only for myself
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 22, 2015
1 parent 1e0f904 commit 5b08670
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
12 changes: 8 additions & 4 deletions lib/droonga/cluster.rb
Expand Up @@ -99,9 +99,12 @@ def shutdown
logger.trace("shutdown: done")
end

def refresh_connections
clear_cache
engine_nodes.each(&:resume)
def refresh_connection_for(name)
engine_nodes.each do |node|
if node.name == receiver_node_name
node.refresh_connection
end
end
end

def reload
Expand All @@ -116,7 +119,8 @@ def reload
logger.info("cluster state not changed")
else
logger.info("cluster state changed", :state => @state)
refresh_connections
clear_cache
engine_nodes.each(&:resume)
on_change
end
logger.trace("reload: done")
Expand Down
2 changes: 1 addition & 1 deletion lib/droonga/command/droonga_engine_service.rb
Expand Up @@ -222,7 +222,7 @@ def stop_gracefully
@receiver.stop_gracefully
#XXX To disconnect all clients to myself (old service),
# we must refresh all connections via EngineNode.
@engine.cluster.refresh_connections
@engine.cluster.refresh_connection_for(@engine_name)
#XXX However, internal connections via Forwarder can be
# still there. Then we have to wait for their timeout.
@receiver.ensure_no_client do
Expand Down
5 changes: 5 additions & 0 deletions lib/droonga/engine_node.rb
Expand Up @@ -65,6 +65,11 @@ def shutdown
logger.trace("shutdown: done")
end

def refresh_connection
shutdown
sender # instantiate new sender
end

def forward(message, destination)
if read_message?(message)
# A node can receive read messages for other nodes,
Expand Down

0 comments on commit 5b08670

Please sign in to comment.