diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexDataInitialization.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexDataInitialization.java index 032c4ce05bc7..2f71feda1f43 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexDataInitialization.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexDataInitialization.java @@ -99,7 +99,11 @@ class FileBasedIndexDataInitialization extends IndexInfrastructure.DataInitializ currentVersionCorrupted = CorruptionMarker.invalidateIndexesIfNeeded(); - FileBasedIndexInfrastructureExtension.EP_NAME.extensions().forEach(ex -> ex.initialize()); + for (FileBasedIndexInfrastructureExtension ex : FileBasedIndexInfrastructureExtension.EP_NAME.getExtensions()) { + FileBasedIndexInfrastructureExtension.InitializationResult result = ex.initialize(); + currentVersionCorrupted = currentVersionCorrupted && + result == FileBasedIndexInfrastructureExtension.InitializationResult.INDEX_REBUILD_REQUIRED; + } } @Override diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexInfrastructureExtension.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexInfrastructureExtension.java index a865a5b86ce4..3f195030b6c9 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexInfrastructureExtension.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexInfrastructureExtension.java @@ -81,7 +81,8 @@ public interface FileBasedIndexInfrastructureExtension { * This method and {@link FileBasedIndexInfrastructureExtension#shutdown()} synchronize * lifecycle of an extension with {@link FileBasedIndexImpl}. **/ - void initialize(); + @NotNull + InitializationResult initialize(); /** * Executed when IntelliJ is shutting down it's indexes (IDE shutdown or plugin load/unload). It is the best time @@ -97,4 +98,8 @@ public interface FileBasedIndexInfrastructureExtension { * all indexed data should be invalidate and full index rebuild will be requested */ int getVersion(); + + enum InitializationResult { + SUCCESSFULLY, INDEX_REBUILD_REQUIRED + } }