Skip to content

Commit

Permalink
Cache collected all nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed May 9, 2014
1 parent d7c13cd commit 184e3e7
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 19 deletions.
14 changes: 9 additions & 5 deletions lib/droonga/catalog/collection_volume.rb
Expand Up @@ -70,11 +70,7 @@ def ratio_scaled_slicer?
end

def all_nodes
nodes = []
slices.each do |slice|
nodes += slice.all_nodes
end
nodes.uniq.sort
@all_nodes ||= collect_all_nodes
end

private
Expand Down Expand Up @@ -109,6 +105,14 @@ def stringify_key(key)
key
end
end

def collect_all_nodes
nodes = []
slices.each do |slice|
nodes += slice.all_nodes
end
nodes.uniq.sort
end
end
end
end
6 changes: 3 additions & 3 deletions lib/droonga/catalog/dataset.rb
Expand Up @@ -59,22 +59,22 @@ def replicas
end

def all_nodes
replicas.all_nodes
@all_nodes ||= replicas.all_nodes
end

def get_routes(args)
routes = []
case args["type"]
when "broadcast"
volumes = replicas.select(args["replica"].to_sym)
volumes = replicas.select(args["replica"].to_sym, args["live_nodes"])
volumes.each do |volume|
slices = volume.select_slices
slices.each do |slice|
routes << slice.volume.address
end
end
when "scatter"
volumes = replicas.select(args["replica"].to_sym)
volumes = replicas.select(args["replica"].to_sym, args["live_nodes"])
volumes.each do |volume|
slice = volume.choose_slice(args["record"])
routes << slice.volume.address
Expand Down
2 changes: 1 addition & 1 deletion lib/droonga/catalog/single_volume.rb
Expand Up @@ -25,7 +25,7 @@ def address
end

def all_nodes
[address.split("/").first]
@all_nodes ||= [address.split("/").first]
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/droonga/catalog/slice.rb
Expand Up @@ -38,7 +38,7 @@ def volume
end

def all_nodes
volume.all_nodes
@all_nodes ||= volume.all_nodes
end
end
end
Expand Down
12 changes: 8 additions & 4 deletions lib/droonga/catalog/version1.rb
Expand Up @@ -67,10 +67,7 @@ def get_partitions(name)
end

def all_nodes
nodes = @data["zones"].collect do |zone|
zone.split("/").first
end
nodes.sort.uniq
@all_nodes ||= collect_all_nodes
end

private
Expand Down Expand Up @@ -100,6 +97,13 @@ def compute_total_weight(dataset)
end
end

def collect_all_nodes
nodes = @data["zones"].collect do |zone|
zone.split("/").first
end
nodes.sort.uniq
end

def validate
do_validation do
validate_effective_date
Expand Down
14 changes: 9 additions & 5 deletions lib/droonga/catalog/version2.rb
Expand Up @@ -58,11 +58,7 @@ def slices(name)
end

def all_nodes
nodes = []
@datasets.each do |name, dataset|
nodes += dataset.all_nodes
end
nodes.sort.uniq
@all_nodes ||= collect_all_nodes
end

private
Expand All @@ -77,6 +73,14 @@ def prepare_data
@datasets[name] = Dataset.new(name, dataset)
end
end

def collect_all_nodes
nodes = []
@datasets.each do |name, dataset|
nodes += dataset.all_nodes
end
nodes.sort.uniq
end
end
end
end
5 changes: 5 additions & 0 deletions lib/droonga/catalog/volume_collection.rb
Expand Up @@ -53,6 +53,11 @@ def select(how=nil)
end

def all_nodes
@all_nodes ||= collect_all_nodes
end

private
def collect_all_nodes
nodes = []
@volumes.each do |volume|
nodes += volume.all_nodes
Expand Down

0 comments on commit 184e3e7

Please sign in to comment.