From f4d5c096cbac4d97267db2e99ff4d72d4f2bea9b Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 18 Jun 2019 12:40:33 +0200 Subject: [PATCH] [Minor] Log active threads on StrolchLockException --- .../strolch/agent/impl/DefaultLockHandler.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/li.strolch.agent/src/main/java/li/strolch/agent/impl/DefaultLockHandler.java b/li.strolch.agent/src/main/java/li/strolch/agent/impl/DefaultLockHandler.java index 4e0cc81c1..8edff73ee 100644 --- a/li.strolch.agent/src/main/java/li/strolch/agent/impl/DefaultLockHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/agent/impl/DefaultLockHandler.java @@ -127,6 +127,22 @@ public class DefaultLockHandler implements LockHandler { if (!tuple.getFirst().tryLock(tryLockTime, timeUnit)) { String msg = "Failed to acquire lock after {0}s for {1}"; //$NON-NLS-1$ msg = MessageFormat.format(msg, timeUnit.toSeconds(tryLockTime), locator); + + try { + logger.error(msg); + logger.error("Listing all active threads: "); + Map allStackTraces = Thread.getAllStackTraces(); + for (Thread thread : allStackTraces.keySet()) { + StackTraceElement[] trace = allStackTraces.get(thread); + StringBuilder sb = new StringBuilder(); + for (StackTraceElement traceElement : trace) + sb.append("\tat ").append(traceElement); + logger.error(thread.getName() + "\n" + sb.toString()); + } + } catch (Exception e) { + logger.error("Failed to log active threads: " + e.getMessage(), e); + } + throw new StrolchLockException(msg); }