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