[Groonga-commit] droonga/droonga-engine at 3fc6d75 [master] Add system.statistics.object.count.per-replica command

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Apr 29 20:59:41 JST 2015


YUKI Hiroshi	2015-04-29 20:59:41 +0900 (Wed, 29 Apr 2015)

  New Revision: 3fc6d757e87d82ce5e64006b8256883ce5f63dad
  https://github.com/droonga/droonga-engine/commit/3fc6d757e87d82ce5e64006b8256883ce5f63dad

  Message:
    Add system.statistics.object.count.per-replica command

  Modified files:
    lib/droonga/planner.rb
    lib/droonga/plugins/system/statistics.rb
    lib/droonga/single_step.rb
    lib/droonga/single_step_definition.rb

  Modified: lib/droonga/planner.rb (+7 -2)
===================================================================
--- lib/droonga/planner.rb    2015-04-29 16:50:40 +0900 (6b7389f)
+++ lib/droonga/planner.rb    2015-04-29 20:59:41 +0900 (4126cf6)
@@ -22,12 +22,13 @@ module Droonga
     include Loggable
     include ErrorMessages
 
-    attr_writer :write, :single_operation, :collector_class
+    attr_writer :write, :single_operation, :use_all_replicas, :collector_class
 
     def initialize(dataset)
       @dataset = dataset
       @write = false
       @single_operation = false
+      @use_all_replicas = false
       @collector_class = nil
     end
 
@@ -75,6 +76,10 @@ module Droonga
       @single_operation
     end
 
+    def use_all_replicas?
+      write? or @use_all_replicas
+    end
+
     def scatter(message, options={})
       planner = DistributedCommandPlanner.new(@dataset, message)
       scatter_options = {
@@ -95,7 +100,7 @@ module Droonga
       broadcast_options = {
         :write => write?,
       }
-      if write?
+      if use_all_replicas?
         broadcast_options[:replica] = "all"
       elsif single_operation?
         broadcast_options[:slice]   = "random"

  Modified: lib/droonga/plugins/system/statistics.rb (+27 -1)
===================================================================
--- lib/droonga/plugins/system/statistics.rb    2015-04-29 16:50:40 +0900 (db2fe4d)
+++ lib/droonga/plugins/system/statistics.rb    2015-04-29 20:59:41 +0900 (3e9c12c)
@@ -23,8 +23,11 @@ module Droonga
         include DatabaseScanner
 
         def handle(message)
+          counts(message.request["output"])
+        end
+
+        def counts(output)
           counts = {}
-          output = message.request["output"]
           if output and output.is_a?(Array)
             if output.include?("tables")
               counts["tables"] = n_tables
@@ -48,6 +51,29 @@ module Droonga
         step.handler = StatisticsObjectCountHandler
         step.collector = Collectors::RecursiveSum
       end
+
+      class StatisticsObjectCountPerReplicaHandler < StatisticsObjectCountHandler
+        def handle(message)
+          {
+            replica_name => counts(message.request["output"]),
+          }
+        end
+
+        def replica_name
+          my_node_name
+        end
+
+        def my_node_name
+          ENV["DROONGA_ENGINE_NAME"]
+        end
+      end
+
+      define_single_step do |step|
+        step.name = "system.statistics.object.count.per-replica"
+        step.use_all_replicas = true
+        step.handler = StatisticsObjectCountPerReplicaHandler
+        step.collector = Collectors::Sum
+      end
     end
   end
 end

  Modified: lib/droonga/single_step.rb (+1 -0)
===================================================================
--- lib/droonga/single_step.rb    2015-04-29 16:50:40 +0900 (6f02a9b)
+++ lib/droonga/single_step.rb    2015-04-29 20:59:41 +0900 (461ef55)
@@ -34,6 +34,7 @@ module Droonga
       planner = Planner.new(@dataset)
       planner.write =****@defin*****?
       planner.single_operation =****@defin*****_operation?
+      planner.use_all_replicas =****@defin*****_all_replicas?
       planner.collector_class =****@defin*****_class
 
       body = message["body"]

  Modified: lib/droonga/single_step_definition.rb (+7 -0)
===================================================================
--- lib/droonga/single_step_definition.rb    2015-04-29 16:50:40 +0900 (6d2fb28)
+++ lib/droonga/single_step_definition.rb    2015-04-29 20:59:41 +0900 (04ce951)
@@ -19,6 +19,7 @@ module Droonga
     attr_accessor :handler
     attr_accessor :collector
     attr_writer :write, :single_operation
+    attr_writer :use_all_replicas
     attr_writer :timeout_calculator
     attr_accessor :inputs
     attr_accessor :output
@@ -29,6 +30,7 @@ module Droonga
       @collector = nil
       @write = false
       @single_operation = false
+      @use_all_replicas = false
       @timeout_calculator = lambda do |step|
         if step["timeout"]
           return step["timeout"]
@@ -52,6 +54,11 @@ module Droonga
       @single_operation
     end
 
+    def use_all_replicas?
+      return true if @write
+      @use_all_replicas
+    end
+
     def timeout_for_step(step)
       if @timeout_calculator
         @timeout_calculator.call(step)
-------------- next part --------------
HTML����������������������������...
Descargar 



More information about the Groonga-commit mailing list
Back to archive index