mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[Freeze Logger] send ThreadInfo objects instead of string
This commit is contained in:
@@ -27,6 +27,8 @@ import com.intellij.util.Alarm;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.lang.management.ThreadInfo;
|
||||
|
||||
public class FreezeLoggerImpl extends FreezeLogger {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(FreezeLoggerImpl.class);
|
||||
@@ -57,7 +59,8 @@ public class FreezeLoggerImpl extends FreezeLogger {
|
||||
return;
|
||||
}
|
||||
|
||||
final String edtTrace = ThreadDumper.dumpEdtStackTrace();
|
||||
final ThreadInfo[] infos = ThreadDumper.getThreadInfos();
|
||||
final String edtTrace = ThreadDumper.dumpEdtStackTrace(infos);
|
||||
if (edtTrace.contains("java.lang.ClassLoader.loadClass")) {
|
||||
return;
|
||||
}
|
||||
@@ -69,7 +72,7 @@ public class FreezeLoggerImpl extends FreezeLogger {
|
||||
+ "\n\n\n";
|
||||
|
||||
if (Registry.is("typing.freeze.report.dumps")) {
|
||||
ThreadDumpInfo info = new ThreadDumpInfo(dumps, isInDumbMode);
|
||||
ThreadDumpInfo info = new ThreadDumpInfo(infos, isInDumbMode);
|
||||
String report = ReporterKt.createReportLine("typing-freeze-dumps", info);
|
||||
if (!StatsSender.INSTANCE.send(report, true)) {
|
||||
LOG.debug("Error while reporting thread dump");
|
||||
@@ -83,15 +86,15 @@ public class FreezeLoggerImpl extends FreezeLogger {
|
||||
}
|
||||
|
||||
class ThreadDumpInfo {
|
||||
public final String dump;
|
||||
public final ThreadInfo[] threadInfos;
|
||||
public final String version;
|
||||
public final String product;
|
||||
public final String buildNumber;
|
||||
public final boolean isEAP;
|
||||
public final boolean isInDumbMode;
|
||||
|
||||
public ThreadDumpInfo(String dump, boolean isInDumbMode) {
|
||||
this.dump = dump;
|
||||
public ThreadDumpInfo(ThreadInfo[] threadInfos, boolean isInDumbMode) {
|
||||
this.threadInfos = threadInfos;
|
||||
this.product = ApplicationInfo.getInstance().getVersionName();
|
||||
this.version = ApplicationInfo.getInstance().getFullVersion();
|
||||
this.buildNumber = ApplicationInfo.getInstance().getBuild().toString();
|
||||
|
||||
@@ -43,17 +43,21 @@ public class ThreadDumper {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String dumpEdtStackTrace() {
|
||||
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
|
||||
ThreadInfo[] threads = sort(threadMXBean.dumpAllThreads(false, false));
|
||||
public static String dumpEdtStackTrace(ThreadInfo[] threadInfos) {
|
||||
StringWriter writer = new StringWriter();
|
||||
if (threads.length > 0) {
|
||||
StackTraceElement[] trace = threads[0].getStackTrace();
|
||||
if (threadInfos.length > 0) {
|
||||
StackTraceElement[] trace = threadInfos[0].getStackTrace();
|
||||
printStackTrace(writer, trace);
|
||||
}
|
||||
return writer.toString();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ThreadInfo[] getThreadInfos() {
|
||||
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
|
||||
return sort(threadMXBean.dumpAllThreads(false, false));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ThreadDump getThreadDumpInfo(@NotNull final ThreadMXBean threadMXBean) {
|
||||
StringWriter writer = new StringWriter();
|
||||
|
||||
Reference in New Issue
Block a user