From 608eda06f8a1a33404bde3a4c644a2e4bd3b517a Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 28 May 2015 11:28:10 +0200 Subject: [PATCH] flush serializers as earlier as possible to prevent one of the reasons of SerilizerNotFoundException (IDEA-136562). Serializers are initialized once so no extra io is introduced (cherry picked from commit fa25663) --- .../psi/stubs/SerializationManagerImpl.java | 15 +++++---------- .../util/indexing/FileBasedIndexImpl.java | 5 ++--- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java b/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java index 058256e823eb..4e4dea26e753 100644 --- a/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java +++ b/platform/lang-api/src/com/intellij/psi/stubs/SerializationManagerImpl.java @@ -19,8 +19,8 @@ import com.intellij.openapi.application.PathManager; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.ShutDownTracker; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.io.AbstractStringEnumerator; +import com.intellij.util.io.IOUtil; import com.intellij.util.io.PersistentStringEnumerator; import org.jetbrains.annotations.NotNull; @@ -81,14 +81,7 @@ public class SerializationManagerImpl extends SerializationManagerEx implements myNameStorage.close(); } - final File[] files = myFile.getParentFile().listFiles(); - if (files != null) { - for (File file : files) { - if (file.getName().startsWith(myFile.getName())) { - FileUtil.delete(file); - } - } - } + IOUtil.deleteAllFilesStartingWith(myFile); myNameStorage = new PersistentStringEnumerator(myFile, true); myStubSerializationHelper = new StubSerializationHelper(myNameStorage); for (ObjectStubSerializer serializer : myAllSerializers) { @@ -104,7 +97,9 @@ public class SerializationManagerImpl extends SerializationManagerEx implements @Override public void flushNameStorage() { - myNameStorage.force(); + if (myNameStorage.isDirty()) { + myNameStorage.force(); + } } @Override diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java index d4ee180c496e..50e8da502cb3 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java @@ -355,6 +355,8 @@ public class FileBasedIndexImpl extends FileBasedIndex { @Override public void run() { + mySerializationManagerEx.flushNameStorage(); + if (lastModCount == myLocalModCount) { flushAllIndices(lastModCount); } @@ -712,9 +714,6 @@ public class FileBasedIndexImpl extends FileBasedIndex { } } - if (!HeavyProcessLatch.INSTANCE.isRunning() && modCount == myLocalModCount) { // do not interfere with 'main' jobs - mySerializationManagerEx.flushNameStorage(); - } ContentHashesSupport.flushContentHashes(); }