[Groonga-commit] droonga/droonga-engine at 6add810 [master] Report progress for droonga-engine-join also

Back to archive index

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 



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