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