Skip to content

Commit

Permalink
Move implementation to get list of live nodes from event handler to s…
Browse files Browse the repository at this point in the history
…erf wrapper
  • Loading branch information
piroor committed Jul 23, 2014
1 parent d79b67c commit efd438f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
12 changes: 1 addition & 11 deletions lib/droonga/command/serf_event_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -315,17 +315,7 @@ def absorb_data
end

def live_nodes
nodes = {}
raw_members = `#{@serf} members -rpc-addr #{@serf_rpc_address} -format json`
members = JSON.parse(raw_members)
members["members"].each do |member|
if member["status"] == "alive"
nodes[member["name"]] = {
"serfAddress" => member["addr"],
}
end
end
nodes
Serf.live_nodes
end

def output_live_nodes
Expand Down
19 changes: 19 additions & 0 deletions lib/droonga/serf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ def send_event(name, event, payload)
def send_query(name, query, payload)
new(nil, name).send_query(query, payload)
end

def live_nodes(name=nil)
new(nil, name).live_nodes
end
end

include Loggable
Expand Down Expand Up @@ -121,6 +125,21 @@ def send_query(query, payload)
run_once("query", *options)
end

def live_nodes
nodes = {}
result= run_once("members", "-format", "json")
members = result[:result]
members["members"].each do |member|
if member["status"] == "alive"
nodes[member["name"]] = {
"serfAddress" => member["addr"],
"tags" => member["tags"],
}
end
end
nodes
end

private
def ensure_serf
@serf = find_system_serf
Expand Down

0 comments on commit efd438f

Please sign in to comment.