YUKI Hiroshi
null+****@clear*****
Fri Nov 21 18:08:11 JST 2014
YUKI Hiroshi 2014-11-21 18:08:11 +0900 (Fri, 21 Nov 2014) New Revision: 6add810bec301d36625c657c11715ddae1d88a25 https://github.com/droonga/droonga-engine/commit/6add810bec301d36625c657c11715ddae1d88a25 Message: Report progress for droonga-engine-join also Modified files: bin/droonga-engine-absorb-data bin/droonga-engine-join Modified: bin/droonga-engine-absorb-data (+5 -4) =================================================================== --- bin/droonga-engine-absorb-data 2014-11-21 18:01:49 +0900 (5a92329) +++ bin/droonga-engine-absorb-data 2014-11-21 18:08:11 +0900 (6717b3f) @@ -104,6 +104,7 @@ absorber_options = { :tag => options.tag, } absorber = Droonga::DataAbsorber.new(absorber_options) +calculated_required_time = absorber.required_time_in_seconds if options.remote start = Time.new.to_i @@ -125,8 +126,8 @@ if options.remote calculated_required_time > 0 elapsed_time = Time.new.to_i - start progress = elapsed_time / calculated_required_time - progress = (progress * 100).to_i - remaining_time_in_seconds = calculated_required_time - elapsed_time + progress = [(progress * 100).to_i, 100].min + remaining_time_in_seconds = [calculated_required_time - elapsed_time, 0].max remaining_time_in_minutes = remaining_time_in_seconds / 60 puts "#{progress}% done (maybe #{remaining_time_in_minutes}minutes remaining)" end @@ -146,8 +147,8 @@ if options.remote else absorber.absorb do |live_status| if live_status[:progress] != Droonga::DataAbsorber::PROGRESS_UNKNOWN - progress = (live_status[:progress] * 100).to_i - remaining_time_in_seconds = calculated_required_time * (1 - live_status[:progress]) + progress = [(live_status[:progress] * 100).to_i, 100].min + remaining_time_in_seconds = ]calculated_required_time * (1 - live_status[:progress])].max remaining_time_in_minutes = remaining_time_in_seconds / 60 puts "#{progress}% done (maybe #{remaining_time_in_minutes}minutes remaining)" else Modified: bin/droonga-engine-join (+21 -0) =================================================================== --- bin/droonga-engine-join 2014-11-21 18:01:49 +0900 (dc789db) +++ bin/droonga-engine-join 2014-11-21 18:08:11 +0900 (09c63be) @@ -66,6 +66,17 @@ def run_remote_command(target, command, options) result[:response] end +absorber_options = { + :dataset => options[:dataset], + :source_host => options["replica-source-host"], + :destination_host => options[:host], + :port => options[:port], + :tag => options[:tag], +} +absorber = Droonga::DataAbsorber.new(absorber_options) +calculated_required_time = absorber.required_time_in_seconds + +start = Time.new.to_i puts("Joining new replica to the cluster...") run_remote_command(joining_node, "join", "node" => joining_node, @@ -82,6 +93,16 @@ while true "key" => "absorbing") absorbing = response["value"] break unless absorbing + + if calculated_required_time != Droonga::DataAbsorber::TIME_UNKNOWN and + calculated_required_time > 0 + elapsed_time = Time.new.to_i - start + progress = elapsed_time / calculated_required_time + progress = [(progress * 100).to_i, 100].min + remaining_time_in_seconds = [calculated_required_time - elapsed_time, 0].max + remaining_time_in_minutes = remaining_time_in_seconds / 60 + puts "#{progress}% done (maybe #{remaining_time_in_minutes}minutes remaining)" + end end response = run_remote_command(source_node, "report_status", -------------- next part -------------- HTML����������������������������...Download