From c395dcfcb198f4440e1884f91dc9fa0d08d62129 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Wed, 25 Dec 2013 14:06:27 +0400 Subject: [PATCH] [log] Flush the Hash->Int persistent map more often After loading data from the VCS. --- .../src/com/intellij/vcs/log/data/VcsLogDataHolder.java | 8 ++++++-- .../impl/src/com/intellij/vcs/log/data/VcsLogHashMap.java | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogDataHolder.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogDataHolder.java index dfc6320f6918..547bb248dd48 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogDataHolder.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogDataHolder.java @@ -298,12 +298,14 @@ public class VcsLogDataHolder implements Disposable { } private List compactHashes(List commits) { - return ContainerUtil.map(commits, new Function() { + List compactedHashes = ContainerUtil.map(commits, new Function() { @Override public CompactCommit fun(final TimedVcsCommit commit) { return commit instanceof CompactCommit ? (CompactCommit)commit : new CompactCommit(commit); } }); + myHashMap.flush(); + return compactedHashes; } /** @@ -600,12 +602,14 @@ public class VcsLogDataHolder implements Disposable { } private List getCommitsFromDetails(List firstBlockDetails) { - return ContainerUtil.map(firstBlockDetails, new Function() { + List commits = ContainerUtil.map(firstBlockDetails, new Function() { @Override public TimedVcsCommit fun(VcsFullCommitDetails details) { return new CompactCommit(details.getHash(), details.getParents(), details.getTime()); } }); + myHashMap.flush(); + return commits; } private void runInBackground(final ThrowableConsumer task, final String title) { 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 11f7540afd3e..26a26725fd90 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 @@ -63,6 +63,10 @@ class VcsLogHashMap implements Disposable { return myPersistentEnumerator.enumerate(hash); } + void flush() { + myPersistentEnumerator.force(); + } + @Override public void dispose() { try {