sk0x50 commented on code in PR #4923:
URL: https://github.com/apache/ignite-3/pull/4923#discussion_r1893701006
##########
modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java:
##########
@@ -1297,4 +1316,165 @@ public static boolean
shouldSwitchToRequestsExecutor(ThreadOperation... required
return true;
}
}
+
+ /**
+ * Performs thread dump and prints all available info to the given log
with WARN logging level.
+ *
+ * @param log Logger.
+ */
+ public static void dumpThreads(IgniteLogger log) {
+ dumpThreads(log, false);
+ }
+
+ /**
+ * Performs thread dump and prints all available info to the given log
+ * with WARN or ERROR logging level depending on {@code isErrorLevel}
parameter.
+ *
+ * @param log Logger.
+ * @param isErrorLevel {@code true} if thread dump must be printed with
ERROR logging level,
+ * {@code false} if thread dump must be printed with WARN logging
level.
+ */
+ public static void dumpThreads(IgniteLogger log, boolean isErrorLevel) {
+ ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
+
+ Set<Long> deadlockedThreadsIds = getDeadlockedThreadIds(mxBean);
+
+ if (deadlockedThreadsIds.isEmpty()) {
+ logMessage(log, "No deadlocked threads detected.", isErrorLevel);
+ } else {
+ logMessage(log, "Deadlocked threads detected (see thread dump
below) "
+ + "[deadlockedThreadsCnt=" + deadlockedThreadsIds.size() +
']', isErrorLevel);
Review Comment:
I always forget that the Ignite 3 code style does not require using
abbreviations. :)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]