Navigation Menu

Skip to content

Commit

Permalink
Don't forward "read" messages to nodes not completely updated
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 1, 2015
1 parent 69f7d5d commit bbd2535
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
8 changes: 4 additions & 4 deletions lib/droonga/cluster.rb
Expand Up @@ -143,9 +143,9 @@ def forward(message, destination)
false
end

def forwardable_nodes
@forwardable_nodes ||= engine_nodes.select do |node|
node.forwardable?
def readable_nodes
@readable_nodes ||= engine_nodes.select do |node|
node.readable?
end.collect(&:name)
end

Expand All @@ -159,7 +159,7 @@ def writable_nodes
def clear_cache
@engine_nodes.each(&:shutdown) if @engine_nodes
@engine_nodes = nil
@forwardable_nodes = nil
@readable_nodes = nil
@writable_nodes = nil
end

Expand Down
4 changes: 2 additions & 2 deletions lib/droonga/dispatcher.rb
Expand Up @@ -217,7 +217,7 @@ def dispatch_steps(steps)
:step => step)
end
else
target_nodes = @cluster.forwardable_nodes
target_nodes = @cluster.readable_nodes
if target_nodes.empty?
logger.error("there is no node to dispath a read step!",
:my_role => @engine_state.role,
Expand Down Expand Up @@ -394,7 +394,7 @@ def resolve_descendants
end

def select_responsive_routes(routes)
selected_nodes = @cluster.forwardable_nodes
selected_nodes = @cluster.readable_nodes
routes.select do |route|
selected_nodes.include?(@engine_state.farm_path(route))
end
Expand Down
8 changes: 7 additions & 1 deletion lib/droonga/engine_node.rb
Expand Up @@ -70,6 +70,10 @@ def forwardable?
role == sender_role
end

def readable?
forwardable? and @buffer.empty?
end

def writable?
case sender_role
when NodeMetadata::Role::SERVICE_PROVIDER
Expand All @@ -84,8 +88,10 @@ def writable?
end

def status
if forwardable?
if readable?
"active"
elsif forwardable?
"inactive"
elsif dead?
"dead"
else
Expand Down

0 comments on commit bbd2535

Please sign in to comment.