diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java index 876cbacef4f7..4d3b69850ff7 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java @@ -575,15 +575,35 @@ public class ExternalSystemUtil { } } finally { - Supplier finishBuildEventSupplier = finishSyncEventSupplier.get(); - assert finishBuildEventSupplier != null; - FinishBuildEvent finishBuildEvent = finishBuildEventSupplier.get(); - assert finishBuildEvent != null; - ServiceManager.getService(project, SyncViewManager.class).onEvent(finishBuildEvent); if (!isPreviewMode) { project.putUserData(ExternalSystemDataKeys.NEWLY_CREATED_PROJECT, null); project.putUserData(ExternalSystemDataKeys.NEWLY_IMPORTED_PROJECT, null); } + sendSyncFinishEvent(finishSyncEventSupplier); + } + } + + private void sendSyncFinishEvent(@NotNull Ref> finishSyncEventSupplier) { + Exception exception = null; + FinishBuildEvent finishBuildEvent = null; + Supplier finishBuildEventSupplier = finishSyncEventSupplier.get(); + if (finishBuildEventSupplier != null) { + try { + finishBuildEvent = finishBuildEventSupplier.get(); + } + catch (Exception e) { + exception = e; + } + } + if (finishBuildEvent != null) { + ServiceManager.getService(project, SyncViewManager.class).onEvent(finishBuildEvent); + } + else { + String message = "Sync finish event has not been received"; + LOG.warn(message, exception); + ServiceManager.getService(project, SyncViewManager.class).onEvent( + new FinishBuildEventImpl(myTask.getId(), null, System.currentTimeMillis(), "sync failed", + new FailureResultImpl(new Exception(message, exception)))); } }