[Groonga-commit] droonga/droonga-engine at c64a1ae [master] Report progress based on interval seconds

Back to archive index

YUKI Hiroshi null+****@clear*****
Fri Apr 10 18:38:21 JST 2015


YUKI Hiroshi	2015-04-10 18:38:21 +0900 (Fri, 10 Apr 2015)

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

  Message:
    Report progress based on interval seconds

  Modified files:
    lib/droonga/data_absorber.rb
    lib/droonga/plugins/system/absorb_data.rb

  Modified: lib/droonga/data_absorber.rb (+3 -0)
===================================================================
--- lib/droonga/data_absorber.rb    2015-04-10 18:28:20 +0900 (2e9ef0e)
+++ lib/droonga/data_absorber.rb    2015-04-10 18:38:21 +0900 (4a3fe7f)
@@ -23,6 +23,7 @@ module Droonga
     include Loggable
 
     DEFAULT_MESSAGES_PER_SECOND = 100
+    DEFAULT_PROGRESS_INTERVAL_SECONDS = 3
 
     TIME_UNKNOWN = -1
     PROGRESS_UNKNOWN = -1
@@ -42,6 +43,7 @@ module Droonga
       @params = params
 
       @messages_per_second = @params[:messages_per_second] || DEFAULT_MESSAGES_PER_SECOND
+      @progress_interval_seconds = @params[:progress_interval_seconds] || DEFAULT_PROGRESS_INTERVAL_SECONDS
 
       @dataset = @params[:dataset] || CatalogGenerator::DEFAULT_DATASET
       @port    = @params[:port]    || CatalogGenerator::DEFAULT_PORT
@@ -69,6 +71,7 @@ module Droonga
           "tag"     => @tag,
           "dataset" => @dataset,
           "messagesPerSecond" => @messages_per_second,
+          "progressIntervalSeconds" => @progress_interval_seconds,
         },
       }
       destination_client.subscribe(absorb_message) do |message|

  Modified: lib/droonga/plugins/system/absorb_data.rb (+19 -4)
===================================================================
--- lib/droonga/plugins/system/absorb_data.rb    2015-04-10 18:28:20 +0900 (a6a953a)
+++ lib/droonga/plugins/system/absorb_data.rb    2015-04-10 18:38:21 +0900 (472a73c)
@@ -28,6 +28,8 @@ module Droonga
         action.synchronous = true
 
         DEFAULT_MESSAGES_PER_SECOND = 100
+        DEFAULT_PROGRESS_INTERVAL_SECONDS = 3
+        MIN_PROGRESS_INTERVAL_SECONDS = 1
 
         class MissingHostParameter < BadRequest
           def initialize
@@ -61,15 +63,18 @@ module Droonga
             serf = Serf.new(my_node_name)
             serf.set_tag("absorbing", true)
 
+            @start_time = Time.now
+
             begin
               @total_n_source_records = count_total_n_source_records
-              @n_processed_messages = 0
               dumper_error_message = dumper.run do |message|
                 @messenger.forward(message,
                                    "to"   => my_node_name,
                                    "type" => message["type"])
-                @n_processed_messages += 1
-                report_progress
+                elapsed_time = (Time.now - @start_time).to_i
+                if (elapsed_time % progress_interval_seconds).zero?
+                  report_progress
+                end
               end
               report_progress
             rescue Exception => exception
@@ -99,7 +104,6 @@ module Droonga
           end
 
           def report_progress
-            return unless (@n_processed_messages % 100).zero?
             forward("#{prefix}.progress",
                     "nProcessedMessages" => @n_processed_messages,
                     "percentage"         => progress_percentage,
@@ -135,6 +139,17 @@ module Droonga
             @messenger.engine_state.name
           end
 
+          def prepare_progress_interval_seconds
+            interval_seconds =****@reque*****["progressIntervalSeconds"]
+                                 || DEFAULT_PROGRESS_INTERVAL_SECONDS
+            interval_seconds = interval_seconds.to_i
+            [interval_seconds, MIN_PROGRESS_INTERVAL_SECONDS].max
+          end
+
+          def progress_interval_seconds
+            @progress_interval_seconds ||= prepare_progress_interval_seconds
+          end
+
           def source_host
             @source_host ||=****@reque*****["host"]
           end
-------------- next part --------------
HTML����������������������������...
Download 



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