This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 4ccd918a6fc HBASE-25694 Improve the shell's 'status replication' 
command output (#6563)
4ccd918a6fc is described below

commit 4ccd918a6fc1919c7244577bbabf5a432e7b8a4e
Author: Duo Zhang <[email protected]>
AuthorDate: Tue Dec 31 09:54:11 2024 +0800

    HBASE-25694 Improve the shell's 'status replication' command output (#6563)
    
    Co-authored-by: xicm <[email protected]>
    Signed-off-by: Duo Zhang <[email protected]>
---
 hbase-shell/src/main/ruby/hbase/admin.rb       | 51 +++++++++++++-------------
 hbase-shell/src/test/ruby/hbase/admin2_test.rb | 11 ++++++
 2 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb 
b/hbase-shell/src/main/ruby/hbase/admin.rb
index 69994c903d7..6264db63d5a 100644
--- a/hbase-shell/src/main/ruby/hbase/admin.rb
+++ b/hbase-shell/src/main/ruby/hbase/admin.rb
@@ -915,24 +915,26 @@ module Hbase
         puts(format('%<servers>d live servers', servers: 
status.getServersSize))
         status.getServers.each do |server_status|
           sl = status.getLoad(server_status)
-          r_sink_string   = '      SINK:'
+          r_sink_string   = '       SINK:'
           r_source_string = '       SOURCE:'
           r_load_sink = sl.getReplicationLoadSink
           next if r_load_sink.nil?
+
           if r_load_sink.getTimestampsOfLastAppliedOp() == 
r_load_sink.getTimestampStarted()
           # If we have applied no operations since we've started replication,
           # assume that we're not acting as a sink and don't print the normal 
information
-            r_sink_string << " TimeStampStarted=" + 
r_load_sink.getTimestampStarted().to_s
-            r_sink_string << ", Waiting for OPs... "
+            r_sink_string << "\n            TimeStampStarted=" + 
r_load_sink.getTimestampStarted().to_s
+            r_sink_string << ",\n            Waiting for OPs... "
           else
-            r_sink_string << " TimeStampStarted=" + 
r_load_sink.getTimestampStarted().to_s
-            r_sink_string << ", AgeOfLastAppliedOp=" + 
r_load_sink.getAgeOfLastAppliedOp().to_s
-            r_sink_string << ", TimeStampsOfLastAppliedOp=" +
-               
(java.util.Date.new(r_load_sink.getTimestampsOfLastAppliedOp())).toString()
+            r_sink_string << "\n            TimeStampStarted=" + 
r_load_sink.getTimestampStarted().to_s
+            r_sink_string << ",\n            AgeOfLastAppliedOp=" + 
r_load_sink.getAgeOfLastAppliedOp().to_s
+            r_sink_string << ",\n            TimeStampsOfLastAppliedOp=" +
+              r_load_sink.getTimestampsOfLastAppliedOp().to_s
           end
 
           r_load_source_map = sl.getReplicationLoadSourceMap
           build_source_string(r_load_source_map, r_source_string)
+
           puts(format('    %<host>s:', host: server_status.getHostname))
           if type.casecmp('SOURCE').zero?
             puts(format('%<source>s', source: r_source_string))
@@ -998,19 +1000,20 @@ module Hbase
 
     def build_source_string(r_load_source_map, r_source_string)
       r_load_source_map.each do |peer, sources|
-        r_source_string << ' PeerID=' + peer
+        r_source_string << "\n            PeerID=" + peer
         sources.each do |source_load|
           build_queue_title(source_load, r_source_string)
           build_running_source_stats(source_load, r_source_string)
+          r_source_string << "\n"
         end
       end
     end
 
     def build_queue_title(source_load, r_source_string)
       r_source_string << if source_load.isRecovered
-                           "\n         Recovered Queue: "
+                           ",\n            Queue(Recovered)="
                          else
-                           "\n         Normal Queue: "
+                           ",\n            Queue(Normal)="
                          end
       r_source_string << source_load.getQueueId
     end
@@ -1019,45 +1022,43 @@ module Hbase
       if source_load.isRunning
         build_shipped_stats(source_load, r_source_string)
         build_load_general_stats(source_load, r_source_string)
-        r_source_string << ', Replication Lag=' +
+        r_source_string << ",\n            ReplicationLag=" +
                            source_load.getReplicationLag.to_s
       else
-        r_source_string << "\n           "
+        r_source_string << ",\n            IsRunning=false, "
         r_source_string << 'No Reader/Shipper threads runnning yet.'
       end
     end
 
     def build_shipped_stats(source_load, r_source_string)
       r_source_string << if source_load.getTimestampOfLastShippedOp.zero?
-                           "\n           " \
+                           ",\n            TimeStampOfLastShippedOp=0, " \
                            'No Ops shipped since last restart'
                          else
-                           "\n           AgeOfLastShippedOp=" +
+                           ",\n            AgeOfLastShippedOp=" +
                            source_load.getAgeOfLastShippedOp.to_s +
-                           ', TimeStampOfLastShippedOp=' +
-                           java.util.Date.new(source_load
-                             .getTimestampOfLastShippedOp).toString
+                           ",\n            TimeStampOfLastShippedOp=" +
+                           source_load.getTimestampOfLastShippedOp.to_s
                          end
     end
 
     def build_load_general_stats(source_load, r_source_string)
-      r_source_string << ', SizeOfLogQueue=' +
+      r_source_string << ",\n            SizeOfLogQueue=" +
                          source_load.getSizeOfLogQueue.to_s
-      r_source_string << ', EditsReadFromLogQueue=' +
+      r_source_string << ",\n            EditsReadFromLogQueue=" +
                          source_load.getEditsRead.to_s
-      r_source_string << ', OpsShippedToTarget=' +
+      r_source_string << ",\n            OpsShippedToTarget=" +
                          source_load.getOPsShipped.to_s
       build_edits_for_source(source_load, r_source_string)
     end
 
     def build_edits_for_source(source_load, r_source_string)
       if source_load.hasEditsSinceRestart
-        r_source_string << ', TimeStampOfNextToReplicate=' +
-                           java.util.Date.new(source_load
-                             .getTimeStampOfNextToReplicate).toString
+        r_source_string << ",\n            TimeStampOfNextToReplicate=" +
+          source_load.getTimeStampOfNextToReplicate.to_s
       else
-        r_source_string << ', No edits for this source'
-        r_source_string << ' since it started'
+        r_source_string << ",\n            HasEditsSinceRestart=false, "
+        r_source_string << 'No edits for this source since it started'
       end
     end
 
diff --git a/hbase-shell/src/test/ruby/hbase/admin2_test.rb 
b/hbase-shell/src/test/ruby/hbase/admin2_test.rb
index 36a92f18841..299af3af5ff 100644
--- a/hbase-shell/src/test/ruby/hbase/admin2_test.rb
+++ b/hbase-shell/src/test/ruby/hbase/admin2_test.rb
@@ -30,14 +30,25 @@ module Hbase
     include HBaseConstants
 
     def setup
+      @peer_id1 = '1'
+      @peer_id2 = '2'
+      @dummy_endpoint = 
'org.apache.hadoop.hbase.replication.DummyReplicationEndpoint'
+
       setup_hbase
       # Create test table if it does not exist
       @test_name = 'hbase_shell_admin2_test_table'
       drop_test_table(@test_name)
       create_test_table(@test_name)
+
+      cluster_key = "zk1,zk2,zk3:2182:/hbase-prod"
+      args = {CLUSTER_KEY => cluster_key, ENDPOINT_CLASSNAME => 
@dummy_endpoint}
+      command(:add_peer, @peer_id1, args)
+      command(:add_peer, @peer_id2, args)
     end
 
     def teardown
+      command(:remove_peer, @peer_id1)
+      command(:remove_peer, @peer_id2)
       shutdown
     end
 

Reply via email to