From e5cfe0b2cb345c0f584c8c58430add9f2f879129 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Tue, 16 Jun 2020 12:28:28 +0300 Subject: [PATCH] shared index: invalidate indexes & recover if chunks.zip is corrupted GitOrigin-RevId: bbc11c601e3fe9ac6cc8c2bb16bb4bbe78a2a2dd --- .../util/indexing/FileBasedIndexDataInitialization.java | 6 +++++- .../indexing/FileBasedIndexInfrastructureExtension.java | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) 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 + } }