From d57c22d4eeb9acb84170da59a0f3ca9fd462e392 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Mon, 30 Sep 2013 17:11:56 -0700 Subject: [PATCH] Close indexes as they are removed from the IndexCollection Change-Id: I71cf370be094ae1eba73b2dec9e0dfec3b9a5c09 --- .../com/google/gerrit/lucene/LuceneIndexModule.java | 2 +- .../google/gerrit/lucene/LuceneVersionManager.java | 1 + .../google/gerrit/server/index/IndexCollection.java | 11 +++++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneIndexModule.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneIndexModule.java index 4e8f3f9d8b..ef9637463e 100644 --- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneIndexModule.java +++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneIndexModule.java @@ -109,7 +109,7 @@ public class LuceneIndexModule extends LifecycleModule { @Override public void stop() { - index.close(); + // Do nothing; indexes are closed by IndexCollection. } } } diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneVersionManager.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneVersionManager.java index f809f49dce..d5666c2299 100644 --- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneVersionManager.java +++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneVersionManager.java @@ -220,5 +220,6 @@ class LuceneVersionManager implements LifecycleListener { @Override public void stop() { + // Do nothing; indexes are closed on demand by IndexCollection. } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexCollection.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexCollection.java index cb89514191..51a6578c4e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexCollection.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/IndexCollection.java @@ -49,7 +49,10 @@ public class IndexCollection implements LifecycleListener { } public void setSearchIndex(ChangeIndex index) { - searchIndex.set(index); + ChangeIndex old = searchIndex.getAndSet(index); + if (old != null && old != index) { + old.close(); + } } public Collection getWriteIndexes() { @@ -76,7 +79,11 @@ public class IndexCollection implements LifecycleListener { } } if (removeIndex >= 0) { - writeIndexes.remove(removeIndex); + try { + writeIndexes.get(removeIndex).close(); + } finally { + writeIndexes.remove(removeIndex); + } } }