diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java index 49b5f4701783..b883162b36a8 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java @@ -63,6 +63,9 @@ public class ExtensionComponentAdapter implements LoadingOrder.Orderable, Assign if (instance == null) { try { Class impl = loadImplementationClass(); + + ExtensionPointImpl.CHECK_CANCELED.run(); + instance = new CachingConstructorInjectionComponentAdapter(getComponentKey(), impl, null, true).getComponentInstance(container); if (myExtensionElement != null) { diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java index 62fe9e85d4a3..1d7e15bfa15c 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java @@ -552,27 +552,16 @@ public final class ExtensionPointImpl implements ExtensionPoint { } @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized") - private static Runnable CHECK_CANCELED = EmptyRunnable.getInstance(); + static Runnable CHECK_CANCELED = EmptyRunnable.getInstance(); public static void setCheckCanceledAction(Runnable checkCanceled) { - CHECK_CANCELED = new Runnable() { - final Set reported = ContainerUtil.newConcurrentSet(); - - @Override - public void run() { - try { - checkCanceled.run(); - } - catch (ProcessCanceledException e) { - if (!isInsideClassInitializer(e.getStackTrace())) { // otherwise ExceptionInInitializerError happens and the class is screwed forever - throw e; - } - else { - Throwable throwable = new Throwable(); - if (reported.add(throwable)) { - LOG.warn("Don't instantiate extensions from class initializer", throwable); - } - } + CHECK_CANCELED = () -> { + try { + checkCanceled.run(); + } + catch (ProcessCanceledException e) { + if (!isInsideClassInitializer(e.getStackTrace())) { // otherwise ExceptionInInitializerError happens and the class is screwed forever + throw e; } } };