mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-39038: IDEA-201580 Infinite logging loop on IDEA shutdown if there's an exception during IDE close
This commit is contained in:
@@ -3,11 +3,10 @@ package com.intellij.diagnostic;
|
||||
|
||||
import com.intellij.diagnostic.VMOptions.MemoryKind;
|
||||
import com.intellij.featureStatistics.fusCollectors.AppLifecycleUsageTriggerCollector;
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageLogger;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSApplicationUsageTrigger;
|
||||
import com.intellij.notification.Notification;
|
||||
import com.intellij.notification.NotificationType;
|
||||
import com.intellij.notification.Notifications;
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.diagnostic.ErrorLogger;
|
||||
@@ -19,8 +18,6 @@ import com.intellij.util.io.MappingFailedException;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author kir
|
||||
@@ -40,6 +37,11 @@ public class DefaultIdeaErrorLogger implements ErrorLogger {
|
||||
if (ourLoggerBroken) return false;
|
||||
|
||||
try {
|
||||
final Application app = ApplicationManager.getApplication();
|
||||
if (app.isDisposed() || app.isDisposeInProgress()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
UpdateChecker.checkForUpdate(event);
|
||||
|
||||
boolean notificationEnabled = !DISABLED_VALUE.equals(System.getProperty(FATAL_ERROR_NOTIFICATION_PROPERTY, ENABLED_VALUE));
|
||||
@@ -49,19 +51,7 @@ public class DefaultIdeaErrorLogger implements ErrorLogger {
|
||||
|
||||
boolean isOOM = getOOMErrorKind(event.getThrowable()) != null;
|
||||
boolean isMappingFailed = !isOOM && event.getThrowable() instanceof MappingFailedException;
|
||||
String key = "ide.error";
|
||||
if(isOOM){
|
||||
key+=".oom";
|
||||
}
|
||||
if(isMappingFailed){
|
||||
key+=".mappingFailed";
|
||||
}
|
||||
|
||||
FUSApplicationUsageTrigger.getInstance().trigger(AppLifecycleUsageTriggerCollector.class, key);
|
||||
Map<String, Object> values = new HashMap<>();
|
||||
values.put("oom",isOOM);
|
||||
values.put("mappingFailed",isMappingFailed);
|
||||
FeatureUsageLogger.INSTANCE.log("lifecycle", "ide.error", values);
|
||||
AppLifecycleUsageTriggerCollector.onError(isOOM, isMappingFailed);
|
||||
|
||||
return notificationEnabled ||
|
||||
showPluginError ||
|
||||
|
||||
+28
@@ -1,13 +1,41 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.featureStatistics.fusCollectors;
|
||||
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageLogger;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ApplicationUsageTriggerCollector;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSApplicationUsageTrigger;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class AppLifecycleUsageTriggerCollector extends ApplicationUsageTriggerCollector {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.featureStatistics.fusCollectors.AppLifecycleUsageTriggerCollector");
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.lifecycle.app";
|
||||
}
|
||||
|
||||
public static void onError(boolean isOOM, boolean isMappingFailed) {
|
||||
try {
|
||||
String key = "ide.error";
|
||||
if (isOOM) {
|
||||
key += ".oom";
|
||||
}
|
||||
if (isMappingFailed) {
|
||||
key += ".mappingFailed";
|
||||
}
|
||||
FUSApplicationUsageTrigger.getInstance().trigger(AppLifecycleUsageTriggerCollector.class, key);
|
||||
Map<String, Object> values = new HashMap<>();
|
||||
values.put("oom", isOOM);
|
||||
values.put("mappingFailed", isMappingFailed);
|
||||
FeatureUsageLogger.INSTANCE.log("lifecycle", "ide.error", values);
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.warn(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user