[Minor] Log active threads on StrolchLockException

This commit is contained in:
Robert von Burg 2019-06-18 12:40:33 +02:00
parent b6e9fb6b99
commit f4d5c096cb
1 changed files with 16 additions and 0 deletions

View File

@ -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<Thread, StackTraceElement[]> 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);
}