From f8c0295a50a0cdaafd9de53f10981d60aebeb19a Mon Sep 17 00:00:00 2001 From: Brett Wooldridge Date: Thu, 16 Oct 2014 16:01:30 +0900 Subject: [PATCH] Cleaner LeakTask internals. --- .../java/com/zaxxer/hikari/util/LeakTask.java | 29 +++++-------------- .../java/com/zaxxer/hikari/util/LeakTask.java | 29 +++++-------------- 2 files changed, 16 insertions(+), 42 deletions(-) diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/LeakTask.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/LeakTask.java index 06ecaca0..e1d040b1 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/LeakTask.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/LeakTask.java @@ -34,7 +34,7 @@ public class LeakTask implements Runnable private static final Logger LOGGER = LoggerFactory.getLogger(LeakTask.class); private final ScheduledFuture scheduledFuture; - private StackTraceElement[] stackTrace; + private Exception exception; public LeakTask() { @@ -43,7 +43,7 @@ public class LeakTask implements Runnable public LeakTask(final long leakDetectionThreshold, final ScheduledExecutorService executorService) { - this.stackTrace = new Exception().getStackTrace(); + this.exception = new Exception(); scheduledFuture = executorService.schedule(this, leakDetectionThreshold, TimeUnit.MILLISECONDS); } @@ -52,33 +52,20 @@ public class LeakTask implements Runnable @Override public void run() { - StackTraceElement[] trace = new StackTraceElement[stackTrace.length - 3]; + final StackTraceElement[] stackTrace = exception.getStackTrace(); + final StackTraceElement[] trace = new StackTraceElement[stackTrace.length - 3]; System.arraycopy(stackTrace, 3, trace, 0, trace.length); - LeakException e = new LeakException(trace); - LOGGER.warn("Connection leak detection triggered, stack trace follows", e); - stackTrace = null; + exception.setStackTrace(trace); + LOGGER.warn("Connection leak detection triggered, stack trace follows", exception); + exception = null; } public void cancel() { - stackTrace = null; + exception = null; if (scheduledFuture != null) { scheduledFuture.cancel(false); } } - - private static class LeakException extends Exception - { - private static final long serialVersionUID = -2021997004669670337L; - - /** - * No-op constructor to avoid the call to fillInStackTrace() - */ - public LeakException(final StackTraceElement[] stackTrace) - { - super("Connection Leak", null, true, true); - this.setStackTrace(stackTrace); - } - } } diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/util/LeakTask.java b/hikaricp/src/main/java/com/zaxxer/hikari/util/LeakTask.java index 06ecaca0..e1d040b1 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/util/LeakTask.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/util/LeakTask.java @@ -34,7 +34,7 @@ public class LeakTask implements Runnable private static final Logger LOGGER = LoggerFactory.getLogger(LeakTask.class); private final ScheduledFuture scheduledFuture; - private StackTraceElement[] stackTrace; + private Exception exception; public LeakTask() { @@ -43,7 +43,7 @@ public class LeakTask implements Runnable public LeakTask(final long leakDetectionThreshold, final ScheduledExecutorService executorService) { - this.stackTrace = new Exception().getStackTrace(); + this.exception = new Exception(); scheduledFuture = executorService.schedule(this, leakDetectionThreshold, TimeUnit.MILLISECONDS); } @@ -52,33 +52,20 @@ public class LeakTask implements Runnable @Override public void run() { - StackTraceElement[] trace = new StackTraceElement[stackTrace.length - 3]; + final StackTraceElement[] stackTrace = exception.getStackTrace(); + final StackTraceElement[] trace = new StackTraceElement[stackTrace.length - 3]; System.arraycopy(stackTrace, 3, trace, 0, trace.length); - LeakException e = new LeakException(trace); - LOGGER.warn("Connection leak detection triggered, stack trace follows", e); - stackTrace = null; + exception.setStackTrace(trace); + LOGGER.warn("Connection leak detection triggered, stack trace follows", exception); + exception = null; } public void cancel() { - stackTrace = null; + exception = null; if (scheduledFuture != null) { scheduledFuture.cancel(false); } } - - private static class LeakException extends Exception - { - private static final long serialVersionUID = -2021997004669670337L; - - /** - * No-op constructor to avoid the call to fillInStackTrace() - */ - public LeakException(final StackTraceElement[] stackTrace) - { - super("Connection Leak", null, true, true); - this.setStackTrace(stackTrace); - } - } }