You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ni...@apache.org on 2023/12/22 09:02:00 UTC

(hbase) branch branch-2.5 updated: HBASE-28269 Fix broken ruby scripts and clean up logging (#5588)

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

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


The following commit(s) were added to refs/heads/branch-2.5 by this push:
     new 912b978421e HBASE-28269 Fix broken ruby scripts and clean up logging (#5588)
912b978421e is described below

commit 912b978421e5eb21336da6480fb0793f8f954a69
Author: Nihal Jain <ni...@apache.org>
AuthorDate: Fri Dec 22 12:59:27 2023 +0530

    HBASE-28269 Fix broken ruby scripts and clean up logging (#5588)
    
    * Removed redundant imports and replaced unsupported methods with alternates
    * Removed usage of `org.apache.logging.log4j` and `org.apache.log4j.Logger` from ruby scripts
    * Added new methods in `Log4jUtils.java` and `InternalLog4jUtils.java` to be used as alternative in scripts
    * Disabled info/debug logging of existing ruby scripts to clean up noisy output
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
    (cherry picked from commit 4e8d93d46dae1834ffbb606ed27bfa03cdc1d2d0)
---
 bin/draining_servers.rb                              |  9 ++++++---
 bin/get-active-master.rb                             |  7 ++++---
 bin/replication/copy_tables_desc.rb                  | 13 +++++++------
 bin/shutdown_regionserver.rb                         |  7 ++++++-
 .../hadoop/hbase/logging/InternalLog4jUtils.java     | 18 ++++++++++++++++--
 .../org/apache/hadoop/hbase/logging/Log4jUtils.java  | 20 +++++++++++++++++---
 hbase-shell/src/main/ruby/jar-bootstrap.rb           | 16 ++++++++--------
 hbase-shell/src/test/ruby/no_cluster_tests_runner.rb | 12 +++++++-----
 hbase-shell/src/test/ruby/tests_runner.rb            | 12 +++++++-----
 9 files changed, 78 insertions(+), 36 deletions(-)

diff --git a/bin/draining_servers.rb b/bin/draining_servers.rb
index 7e1a4e95c25..f253d9b64ac 100644
--- a/bin/draining_servers.rb
+++ b/bin/draining_servers.rb
@@ -25,7 +25,6 @@ include Java
 
 java_import org.apache.hadoop.hbase.HBaseConfiguration
 java_import org.apache.hadoop.hbase.client.ConnectionFactory
-java_import org.apache.hadoop.hbase.client.HBaseAdmin
 java_import org.apache.hadoop.hbase.zookeeper.ZKUtil
 java_import org.apache.hadoop.hbase.zookeeper.ZNodePaths
 java_import org.slf4j.LoggerFactory
@@ -136,8 +135,12 @@ end
 
 hostOrServers = ARGV[1..ARGV.size]
 
-# Create a logger and save it to ruby global
-$LOG = LoggerFactory.getLogger(NAME)
+# disable debug/info logging on this script for clarity
+log_level = 'ERROR'
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop', log_level)
+
 case ARGV[0]
 when 'add'
   if ARGV.length < 2
diff --git a/bin/get-active-master.rb b/bin/get-active-master.rb
index d8c96fe3d4a..65e0c3cd0fe 100644
--- a/bin/get-active-master.rb
+++ b/bin/get-active-master.rb
@@ -24,9 +24,10 @@ java_import org.apache.hadoop.hbase.zookeeper.ZKWatcher
 java_import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker
 
 # disable debug/info logging on this script for clarity
-log_level = org.apache.log4j.Level::ERROR
-org.apache.log4j.Logger.getLogger('org.apache.hadoop.hbase').setLevel(log_level)
-org.apache.log4j.Logger.getLogger('org.apache.zookeeper').setLevel(log_level)
+log_level = 'ERROR'
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop', log_level)
 
 config = HBaseConfiguration.create
 
diff --git a/bin/replication/copy_tables_desc.rb b/bin/replication/copy_tables_desc.rb
index 44a24f9eea0..39bed5423c7 100644
--- a/bin/replication/copy_tables_desc.rb
+++ b/bin/replication/copy_tables_desc.rb
@@ -27,11 +27,8 @@ include Java
 java_import org.apache.hadoop.conf.Configuration
 java_import org.apache.hadoop.hbase.HBaseConfiguration
 java_import org.apache.hadoop.hbase.HConstants
-java_import org.apache.hadoop.hbase.HTableDescriptor
 java_import org.apache.hadoop.hbase.TableName
 java_import org.apache.hadoop.hbase.client.ConnectionFactory
-java_import org.apache.hadoop.hbase.client.HBaseAdmin
-java_import org.slf4j.LoggerFactory
 
 # Name of this script
 NAME = 'copy_tables_desc'.freeze
@@ -45,7 +42,7 @@ end
 def copy(src, dst, table)
   # verify if table exists in source cluster
   begin
-    t = src.getTableDescriptor(TableName.valueOf(table))
+    t = src.getDescriptor(TableName.valueOf(table))
   rescue org.apache.hadoop.hbase.TableNotFoundException
     puts format("Source table \"%s\" doesn't exist, skipping.", table)
     return
@@ -62,9 +59,13 @@ def copy(src, dst, table)
   puts format('Schema for table "%s" was succesfully copied to remote cluster.', table)
 end
 
-usage if ARGV.size < 2 || ARGV.size > 3
+# disable debug/info logging on this script for clarity
+log_level = 'ERROR'
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop', log_level)
 
-LOG = LoggerFactory.getLogger(NAME)
+usage if ARGV.size < 2 || ARGV.size > 3
 
 parts1 = ARGV[0].split(':')
 
diff --git a/bin/shutdown_regionserver.rb b/bin/shutdown_regionserver.rb
index a131776e32a..d8ddb2a8625 100644
--- a/bin/shutdown_regionserver.rb
+++ b/bin/shutdown_regionserver.rb
@@ -24,7 +24,6 @@
 
 include Java
 java_import org.apache.hadoop.hbase.HBaseConfiguration
-java_import org.apache.hadoop.hbase.client.HBaseAdmin
 java_import org.apache.hadoop.hbase.client.ConnectionFactory
 
 def usage(msg = nil)
@@ -35,6 +34,12 @@ def usage(msg = nil)
   abort
 end
 
+# disable debug/info logging on this script for clarity
+log_level = 'ERROR'
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop', log_level)
+
 usage if ARGV.empty?
 
 ARGV.each do |x|
diff --git a/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/InternalLog4jUtils.java b/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/InternalLog4jUtils.java
index 18c2c0f6e67..8dff80cf61b 100644
--- a/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/InternalLog4jUtils.java
+++ b/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/InternalLog4jUtils.java
@@ -36,13 +36,27 @@ final class InternalLog4jUtils {
   private InternalLog4jUtils() {
   }
 
-  static void setLogLevel(String loggerName, String levelName) {
+  private static org.apache.logging.log4j.Level getLevel(String levelName)
+    throws IllegalArgumentException {
     org.apache.logging.log4j.Level level =
       org.apache.logging.log4j.Level.toLevel(levelName.toUpperCase());
     if (!level.toString().equalsIgnoreCase(levelName)) {
       throw new IllegalArgumentException("Unsupported log level " + levelName);
     }
-    org.apache.logging.log4j.core.config.Configurator.setLevel(loggerName, level);
+    return level;
+  }
+
+  static void setAllLevels(String loggerName, String levelName) {
+    org.apache.logging.log4j.core.config.Configurator.setAllLevels(loggerName, getLevel(levelName));
+  }
+
+  static void setLogLevel(String loggerName, String levelName) {
+    org.apache.logging.log4j.core.config.Configurator.setLevel(loggerName, getLevel(levelName));
+  }
+
+  static void setRootLevel(String levelName) {
+    String loggerName = org.apache.logging.log4j.LogManager.getRootLogger().getName();
+    setLogLevel(loggerName, levelName);
   }
 
   static String getEffectiveLevel(String loggerName) {
diff --git a/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/Log4jUtils.java b/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/Log4jUtils.java
index ba136663e09..8d9bb4783ee 100644
--- a/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/Log4jUtils.java
+++ b/hbase-logging/src/main/java/org/apache/hadoop/hbase/logging/Log4jUtils.java
@@ -58,10 +58,9 @@ public final class Log4jUtils {
     }
   }
 
-  public static void setLogLevel(String loggerName, String levelName) {
-    Method method = getMethod("setLogLevel", String.class, String.class);
+  private static void invoke(Method method, Object... args) throws AssertionError {
     try {
-      method.invoke(null, loggerName, levelName);
+      method.invoke(null, args);
     } catch (IllegalAccessException e) {
       throw new AssertionError("should not happen", e);
     } catch (InvocationTargetException e) {
@@ -70,6 +69,21 @@ public final class Log4jUtils {
     }
   }
 
+  public static void setAllLevels(String loggerName, String levelName) {
+    Method method = getMethod("setAllLevels", String.class, String.class);
+    invoke(method, loggerName, levelName);
+  }
+
+  public static void setLogLevel(String loggerName, String levelName) {
+    Method method = getMethod("setLogLevel", String.class, String.class);
+    invoke(method, loggerName, levelName);
+  }
+
+  public static void setRootLevel(String levelName) {
+    Method method = getMethod("setRootLevel", String.class);
+    invoke(method, levelName);
+  }
+
   public static String getEffectiveLevel(String loggerName) {
     Method method = getMethod("getEffectiveLevel", String.class);
     try {
diff --git a/hbase-shell/src/main/ruby/jar-bootstrap.rb b/hbase-shell/src/main/ruby/jar-bootstrap.rb
index 3f0e650947c..ed8f9b3a3a2 100644
--- a/hbase-shell/src/main/ruby/jar-bootstrap.rb
+++ b/hbase-shell/src/main/ruby/jar-bootstrap.rb
@@ -104,7 +104,7 @@ opts = GetoptLong.new(
 opts.ordering = GetoptLong::REQUIRE_ORDER
 
 script2run = nil
-log_level = org.apache.logging.log4j.Level::ERROR
+log_level = 'ERROR'
 @shell_debug = false
 interactive = true
 full_backtrace = false
@@ -118,7 +118,7 @@ opts.each do |opt, arg|
   when D_ARG
     conf_from_cli = add_to_configuration(conf_from_cli, arg)
   when '--debug'
-    log_level = org.apache.logging.log4j.Level::DEBUG
+    log_level = 'DEBUG'
     full_backtrace = true
     @shell_debug = true
     puts 'Setting DEBUG log level...'
@@ -138,8 +138,8 @@ script2run = ARGV.shift unless ARGV.empty?
 ARGV.unshift('-d') if @shell_debug
 
 # Set logging level to avoid verboseness
-org.apache.logging.log4j.core.config.Configurator.setAllLevels('org.apache.zookeeper', log_level)
-org.apache.logging.log4j.core.config.Configurator.setAllLevels('org.apache.hadoop', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop', log_level)
 
 # Require HBase now after setting log levels
 require 'hbase_constants'
@@ -165,14 +165,14 @@ def debug
   if @shell_debug
     @shell_debug = false
     conf.back_trace_limit = 0
-    log_level = org.apache.logging.log4j.Level::ERROR
+    log_level = 'ERROR'
   else
     @shell_debug = true
     conf.back_trace_limit = 100
-    log_level = org.apache.logging.log4j.Level::DEBUG
+    log_level = 'DEBUG'
   end
-  org.apache.logging.log4j.core.config.Configurator.setAllLevels('org.apache.zookeeper', log_level)
-  org.apache.logging.log4j.core.config.Configurator.setAllLevels('org.apache.hadoop', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop', log_level)
   debug?
 end
 
diff --git a/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb b/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb
index 77b16df02e7..0d2f1901438 100644
--- a/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb
+++ b/hbase-shell/src/test/ruby/no_cluster_tests_runner.rb
@@ -28,11 +28,13 @@ unless defined?($TEST_CLUSTER)
   include Java
 
   # Set logging level to avoid verboseness
-  org.apache.log4j.Logger.getRootLogger.setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.zookeeper").setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.hadoop.hdfs").setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.hadoop.hbase").setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.hadoop.ipc.HBaseServer").setLevel(org.apache.log4j.Level::OFF)
+  log_level = 'OFF'
+  org.apache.hadoop.hbase.logging.Log4jUtils.setRootLevel(log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hdfs', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils
+    .setAllLevels('org.apache.hadoop.ipc.HBaseServer', log_level)
 
   java_import org.apache.hadoop.hbase.HBaseTestingUtility
 
diff --git a/hbase-shell/src/test/ruby/tests_runner.rb b/hbase-shell/src/test/ruby/tests_runner.rb
index 147d68103f5..e05d11117e5 100644
--- a/hbase-shell/src/test/ruby/tests_runner.rb
+++ b/hbase-shell/src/test/ruby/tests_runner.rb
@@ -27,11 +27,13 @@ unless defined?($TEST_CLUSTER)
   include Java
 
   # Set logging level to avoid verboseness
-  org.apache.log4j.Logger.getRootLogger.setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.zookeeper").setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.hadoop.hdfs").setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.hadoop.hbase").setLevel(org.apache.log4j.Level::OFF)
-  org.apache.log4j.Logger.getLogger("org.apache.hadoop.ipc.HBaseServer").setLevel(org.apache.log4j.Level::OFF)
+  log_level = 'OFF'
+  org.apache.hadoop.hbase.logging.Log4jUtils.setRootLevel(log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.zookeeper', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hdfs', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils.setAllLevels('org.apache.hadoop.hbase', log_level)
+  org.apache.hadoop.hbase.logging.Log4jUtils
+    .setAllLevels('org.apache.hadoop.ipc.HBaseServer', log_level)
 
   java_import org.apache.hadoop.hbase.HBaseTestingUtility