From 2beff60bed9f55f004decfec005e0ef500f735df Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Fri, 20 Dec 2013 17:00:05 +0400 Subject: [PATCH] [log] Flush & Close persistent enumerator on dispose() --- .../com/intellij/vcs/log/data/VcsLogHashMap.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogHashMap.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogHashMap.java index d75019a381e7..11f7540afd3e 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogHashMap.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogHashMap.java @@ -15,7 +15,9 @@ */ package com.intellij.vcs.log.data; +import com.intellij.openapi.Disposable; import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.ThrowableComputable; import com.intellij.util.io.IOUtil; @@ -35,9 +37,10 @@ import java.io.IOException; /** * Supports the int <-> Hash persistent mapping. */ -class VcsLogHashMap { +class VcsLogHashMap implements Disposable { private static final File LOG_CACHE_APP_DIR = new File(PathManager.getSystemPath(), "vcs-log"); + private static final Logger LOG = Logger.getInstance(VcsLogHashMap.class); private final PersistentEnumerator myPersistentEnumerator; @@ -60,6 +63,16 @@ class VcsLogHashMap { return myPersistentEnumerator.enumerate(hash); } + @Override + public void dispose() { + try { + myPersistentEnumerator.close(); + } + catch (IOException e) { + LOG.warn(e); + } + } + private static class MyHashKeyDescriptor implements KeyDescriptor { @Override public void save(DataOutput out, Hash value) throws IOException {