This is an automated email from the ASF dual-hosted git repository. lhotari pushed a commit to branch branch-4.16 in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
commit a76dab9fe5ce379b7eb43050d72143c22fa7e4f5 Author: houxiaoyu <[email protected]> AuthorDate: Tue Jun 11 07:41:10 2024 +0800 Fix TimedRunnable log NPE (#4425) (cherry picked from commit 43b5ccc5adb3ac2a0f96f22740e745c799095281) --- .../org/apache/bookkeeper/common/util/OrderedExecutor.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java index f856a4ea32..a6f137f4aa 100644 --- a/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java +++ b/bookkeeper-common/src/main/java/org/apache/bookkeeper/common/util/OrderedExecutor.java @@ -187,10 +187,12 @@ public class OrderedExecutor implements ExecutorService { protected class TimedRunnable implements Runnable { final Runnable runnable; final long initNanos; + final Class<?> runnableClass; TimedRunnable(Runnable runnable) { this.runnable = runnable; this.initNanos = MathUtils.nowInNano(); + this.runnableClass = runnable.getClass(); } @Override @@ -203,8 +205,7 @@ public class OrderedExecutor implements ExecutorService { long elapsedMicroSec = MathUtils.elapsedMicroSec(startNanos); taskExecutionStats.registerSuccessfulEvent(elapsedMicroSec, TimeUnit.MICROSECONDS); if (elapsedMicroSec >= warnTimeMicroSec) { - log.warn("Runnable {}:{} took too long {} micros to execute.", runnable, runnable.getClass(), - elapsedMicroSec); + log.warn("Runnable {} took too long {} micros to execute.", runnableClass, elapsedMicroSec); } } } @@ -216,10 +217,12 @@ public class OrderedExecutor implements ExecutorService { protected class TimedCallable<T> implements Callable<T> { final Callable<T> callable; final long initNanos; + final Class<?> callableClass; TimedCallable(Callable<T> callable) { this.callable = callable; this.initNanos = MathUtils.nowInNano(); + this.callableClass = callable.getClass(); } @Override @@ -232,8 +235,7 @@ public class OrderedExecutor implements ExecutorService { long elapsedMicroSec = MathUtils.elapsedMicroSec(startNanos); taskExecutionStats.registerSuccessfulEvent(elapsedMicroSec, TimeUnit.MICROSECONDS); if (elapsedMicroSec >= warnTimeMicroSec) { - log.warn("Callable {}:{} took too long {} micros to execute.", callable, callable.getClass(), - elapsedMicroSec); + log.warn("Callable {} took too long {} micros to execute.", callableClass, elapsedMicroSec); } } }
