From ab954c899d0a6e3726907309ac531335ce6c7cb2 Mon Sep 17 00:00:00 2001 From: Wei-Chiu Chuang Date: Wed, 30 Jun 2021 11:20:20 +0800 Subject: [PATCH 1/2] HBASE-26041 Replace PrintThreadInfoHelper with HBase's own ReflectionUtils.printThreadInfo() Change-Id: I43d8a99aa828831070e1b1696010630f7814b39b --- .../hadoop/hbase/util/ReflectionUtils.java | 2 +- .../org/apache/hadoop/hbase/util/Threads.java | 66 +------------------ 2 files changed, 2 insertions(+), 66 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ReflectionUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ReflectionUtils.java index 7e195781720a..fb80e1b40615 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ReflectionUtils.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ReflectionUtils.java @@ -147,7 +147,7 @@ public static void logThreadInfo(Logger log, * @param stream the stream to * @param title a string title for the stack trace */ - private static void printThreadInfo(PrintStream stream, + static void printThreadInfo(PrintStream stream, String title) { final int STACK_DEPTH = 20; boolean contention = threadBean.isThreadContentionMonitoringEnabled(); diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java index b4bbdac1e493..ce66eef30f97 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java @@ -30,7 +30,6 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.StringUtils; import org.apache.yetus.audience.InterfaceAudience; import org.slf4j.Logger; @@ -196,68 +195,6 @@ public static void setLoggingUncaughtExceptionHandler(Thread t) { t.setUncaughtExceptionHandler(LOGGING_EXCEPTION_HANDLER); } - private interface PrintThreadInfoHelper { - - void printThreadInfo(PrintStream stream, String title); - - } - - private static class PrintThreadInfoLazyHolder { - - public static final PrintThreadInfoHelper HELPER = initHelper(); - - private static PrintThreadInfoHelper initHelper() { - Method method = null; - try { - // Hadoop 2.7+ declares printThreadInfo(PrintStream, String) - method = ReflectionUtils.class.getMethod("printThreadInfo", PrintStream.class, - String.class); - method.setAccessible(true); - final Method hadoop27Method = method; - return new PrintThreadInfoHelper() { - - @Override - public void printThreadInfo(PrintStream stream, String title) { - try { - hadoop27Method.invoke(null, stream, title); - } catch (IllegalAccessException | IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e.getCause()); - } - } - }; - } catch (NoSuchMethodException e) { - LOG.info( - "Can not find hadoop 2.7+ printThreadInfo method, try hadoop hadoop 2.6 and earlier", e); - } - try { - // Hadoop 2.6 and earlier declares printThreadInfo(PrintWriter, String) - method = ReflectionUtils.class.getMethod("printThreadInfo", PrintWriter.class, - String.class); - method.setAccessible(true); - final Method hadoop26Method = method; - return new PrintThreadInfoHelper() { - - @Override - public void printThreadInfo(PrintStream stream, String title) { - try { - hadoop26Method.invoke(null, new PrintWriter( - new OutputStreamWriter(stream, StandardCharsets.UTF_8)), title); - } catch (IllegalAccessException | IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e.getCause()); - } - } - }; - } catch (NoSuchMethodException e) { - LOG.warn("Cannot find printThreadInfo method. Check hadoop jars linked", e); - } - return null; - } - } - /** * Print all of the thread's information and stack traces. Wrapper around Hadoop's method. * @@ -265,7 +202,6 @@ public void printThreadInfo(PrintStream stream, String title) { * @param title a string title for the stack trace */ public static void printThreadInfo(PrintStream stream, String title) { - Preconditions.checkNotNull(PrintThreadInfoLazyHolder.HELPER, - "Cannot find method. Check hadoop jars linked").printThreadInfo(stream, title); + ReflectionUtils.printThreadInfo(stream, title); } } From 9efdca084e96e2e04ec0a621f635a1d168d6ce40 Mon Sep 17 00:00:00 2001 From: Wei-Chiu Chuang Date: Thu, 1 Jul 2021 17:53:15 +0800 Subject: [PATCH 2/2] Remove unused imports Change-Id: Ia4bda130c9c0bd9e8e094f8c77e8b8f599376771 --- .../main/java/org/apache/hadoop/hbase/util/Threads.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java index ce66eef30f97..610fe05214e4 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Threads.java @@ -18,13 +18,8 @@ */ package org.apache.hadoop.hbase.util; -import java.io.OutputStreamWriter; import java.io.PrintStream; -import java.io.PrintWriter; import java.lang.Thread.UncaughtExceptionHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.nio.charset.StandardCharsets; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; @@ -35,8 +30,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.hbase.thirdparty.com.google.common.base.Preconditions; - /** * Thread Utility */