mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-03 19:03:52 +00:00
also dump the writer/owner thread if any
This commit is contained in:
1 parent
8519fcd2f0
commit
cb954f7ec5
2 files changed
+17
-4
No files matched your search
@@ -37,12 +37,14 @@ public class LockUtil {
|
||||
message.append(NUMBER_OF_SECONDS_TO_WAIT_FOR_LOCK);
|
||||
message.append("s at ");
|
||||
message.append(getCurrentStackTrace());
|
||||
Thread writer = lockParent.getWriter();
|
||||
if (writer != null) {
|
||||
message.append("\nThe current writer is:\n");
|
||||
appendThreadData(message, writer);
|
||||
}
|
||||
message.append("\nThe current readers are:\n");
|
||||
for (Thread reader : lockParent.getReaders()) {
|
||||
message.append(reader);
|
||||
message.append('\n');
|
||||
message.append(getStackTrace(reader));
|
||||
message.append('\n');
|
||||
appendThreadData(message, reader);
|
||||
}
|
||||
message.append("Trying again...");
|
||||
logger.info(message.toString());
|
||||
@@ -58,6 +60,13 @@ public class LockUtil {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
private static void appendThreadData(StringBuilder message, Thread writer) {
|
||||
message.append(writer);
|
||||
message.append('\n');
|
||||
message.append(getStackTrace(writer));
|
||||
message.append('\n');
|
||||
}
|
||||
|
||||
public static void lockForRead(NamedReentrantReadWriteLock lock) {
|
||||
lock(lock.readLock(), "readLock "+lock.getName(), lock);
|
||||
|
||||
+4
@@ -165,6 +165,10 @@ public class NamedReentrantReadWriteLock extends ReentrantReadWriteLock implemen
|
||||
return new ArrayList<Thread>(readers);
|
||||
}
|
||||
|
||||
public Thread getWriter() {
|
||||
return getOwner();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ReentrantReadWriteLock "+getName()+" ("+(isFair()?"fair":"unfair")+")";
|
||||
|
||||
Reference in new issue
Block a user