From c0df46cd5fb92a66d2e28cc5f367d9a25e529c42 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 28 Jul 2014 12:24:10 +0200 Subject: [PATCH] flush cached library info in async way via flushing daemon --- .../src/com/intellij/openapi/vfs/impl/jar/JarHandler.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/jar/JarHandler.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/jar/JarHandler.java index efaf84d08b8e..06676b213831 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/jar/JarHandler.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/jar/JarHandler.java @@ -30,6 +30,7 @@ import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.VfsBundle; import com.intellij.openapi.vfs.impl.ZipHandler; import com.intellij.openapi.vfs.newvfs.persistent.FSRecords; +import com.intellij.openapi.vfs.newvfs.persistent.FlushingDaemon; import com.intellij.util.io.DataExternalizer; import com.intellij.util.io.EnumeratorStringDescriptor; import com.intellij.util.io.IOUtil; @@ -169,7 +170,6 @@ public class JarHandler extends ZipHandler { info = new CacheLibraryInfo(mirrorFile.getName(), originalAttributes.lastModified, originalAttributes.length); CacheLibraryInfo.ourCachedLibraryInfo.put(path, info); - CacheLibraryInfo.ourCachedLibraryInfo.force(); return mirrorFile; } catch (IOException ex) { @@ -260,6 +260,12 @@ public class JarHandler extends ZipHandler { } assert info != null; ourCachedLibraryInfo = info; + FlushingDaemon.everyFiveSeconds(new Runnable() { + @Override + public void run() { + if (ourCachedLibraryInfo.isDirty()) ourCachedLibraryInfo.force(); + } + }); } private CacheLibraryInfo(@NotNull String path, long time, long length) {