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)
This commit is contained in:
Maxim.Mossienko
2015-05-28 11:49:58 +02:00
parent 1353093a3e
commit 608eda06f8
2 changed files with 7 additions and 13 deletions
@@ -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
@@ -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();
}