diff --git a/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java b/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java index dbe734157d99..91dc06f12378 100644 --- a/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java +++ b/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java @@ -76,6 +76,7 @@ public class PersistentHashMapValueStorage { @Override protected void disposeAccessor(DataOutputStream fileAccessor) throws IOException { + if (!useSingleFileDescriptor) IOUtil.syncStream(fileAccessor); fileAccessor.close(); } }; diff --git a/platform/util/src/com/intellij/util/io/RandomAccessFileWithLengthAndSizeTracking.java b/platform/util/src/com/intellij/util/io/RandomAccessFileWithLengthAndSizeTracking.java index ef340d7f54f2..c6fecfa1c4cc 100644 --- a/platform/util/src/com/intellij/util/io/RandomAccessFileWithLengthAndSizeTracking.java +++ b/platform/util/src/com/intellij/util/io/RandomAccessFileWithLengthAndSizeTracking.java @@ -178,6 +178,7 @@ class RandomAccessFileWithLengthAndSizeTracking extends RandomAccessFile { if (LOG.isTraceEnabled()) { LOG.trace("Closed:" + this + "," + Thread.currentThread() ); } + force(); super.close(); } @@ -185,4 +186,12 @@ class RandomAccessFileWithLengthAndSizeTracking extends RandomAccessFile { public String toString() { return myPath + "@" + Integer.toHexString(hashCode()); } + + public void force() throws IOException { + if (LOG.isTraceEnabled()) { + LOG.trace("Forcing:" + this + "," + Thread.currentThread() ); + } + + getFD().sync(); + } }