diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java index 858d8be78b..382716e1f5 100644 --- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java +++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java @@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.gerrit.server.index.IndexRewriteImpl.CLOSED_STATUSES; import static com.google.gerrit.server.index.IndexRewriteImpl.OPEN_STATUSES; -import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; @@ -90,6 +89,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * Secondary index implementation using Apache Lucene. @@ -203,54 +203,61 @@ public class LuceneChangeIndex implements ChangeIndex { @SuppressWarnings("unchecked") @Override - public ListenableFuture insert(ChangeData cd) throws IOException { + public void insert(ChangeData cd) throws IOException { Term id = QueryBuilder.idTerm(cd); Document doc = toDocument(cd); - if (cd.getChange().getStatus().isOpen()) { - return allOf( - closedIndex.delete(id), - openIndex.insert(doc)); - } else { - return allOf( - openIndex.delete(id), - closedIndex.insert(doc)); + try { + if (cd.getChange().getStatus().isOpen()) { + Futures.allAsList( + closedIndex.delete(id), + openIndex.insert(doc)).get(); + } else { + Futures.allAsList( + openIndex.delete(id), + closedIndex.insert(doc)).get(); + } + } catch (ExecutionException e) { + throw new IOException(e); + } catch (InterruptedException e) { + throw new IOException(e); } } @SuppressWarnings("unchecked") @Override - public ListenableFuture replace(ChangeData cd) throws IOException { + public void replace(ChangeData cd) throws IOException { Term id = QueryBuilder.idTerm(cd); Document doc = toDocument(cd); - if (cd.getChange().getStatus().isOpen()) { - return allOf( - closedIndex.delete(id), - openIndex.replace(id, doc)); - } else { - return allOf( - openIndex.delete(id), - closedIndex.replace(id, doc)); + try { + if (cd.getChange().getStatus().isOpen()) { + Futures.allAsList( + closedIndex.delete(id), + openIndex.replace(id, doc)).get(); + } else { + Futures.allAsList( + openIndex.delete(id), + closedIndex.replace(id, doc)).get(); + } + } catch (ExecutionException e) { + throw new IOException(e); + } catch (InterruptedException e) { + throw new IOException(e); } } @SuppressWarnings("unchecked") @Override - public ListenableFuture delete(ChangeData cd) throws IOException { + public void delete(ChangeData cd) throws IOException { Term id = QueryBuilder.idTerm(cd); - return allOf( - openIndex.delete(id), - closedIndex.delete(id)); - } - - private static ListenableFuture allOf(ListenableFuture... f) { - return Futures.transform( - Futures.allAsList(f), - new Function, Void>() { - @Override - public Void apply(List input) { - return null; - } - }); + try { + Futures.allAsList( + openIndex.delete(id), + closedIndex.delete(id)).get(); + } catch (ExecutionException e) { + throw new IOException(e); + } catch (InterruptedException e) { + throw new IOException(e); + } } @Override diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/SubIndex.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/SubIndex.java index 1623bb7193..237d35cc0c 100644 --- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/SubIndex.java +++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/SubIndex.java @@ -99,15 +99,15 @@ class SubIndex { } } - ListenableFuture insert(Document doc) throws IOException { + ListenableFuture insert(Document doc) throws IOException { return new NrtFuture(writer.addDocument(doc)); } - ListenableFuture replace(Term term, Document doc) throws IOException { + ListenableFuture replace(Term term, Document doc) throws IOException { return new NrtFuture(writer.updateDocument(term, doc)); } - ListenableFuture delete(Term term) throws IOException { + ListenableFuture delete(Term term) throws IOException { return new NrtFuture(writer.deleteDocuments(term)); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java index 8e895073c2..fd37cfb119 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java @@ -14,8 +14,6 @@ package com.google.gerrit.server.index; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import com.google.gerrit.server.query.Predicate; import com.google.gerrit.server.query.QueryParseException; import com.google.gerrit.server.query.change.ChangeData; @@ -42,18 +40,18 @@ public interface ChangeIndex { } @Override - public ListenableFuture insert(ChangeData cd) throws IOException { - return Futures.immediateFuture(null); + public void insert(ChangeData cd) throws IOException { + // Do nothing. } @Override - public ListenableFuture replace(ChangeData cd) throws IOException { - return Futures.immediateFuture(null); + public void replace(ChangeData cd) throws IOException { + // Do nothing. } @Override - public ListenableFuture delete(ChangeData cd) throws IOException { - return Futures.immediateFuture(null); + public void delete(ChangeData cd) throws IOException { + // Do nothing. } @Override @@ -93,7 +91,7 @@ public interface ChangeIndex { * * @throws IOException if the change could not be inserted. */ - public ListenableFuture insert(ChangeData cd) throws IOException; + public void insert(ChangeData cd) throws IOException; /** * Update a change document in the index. @@ -106,7 +104,7 @@ public interface ChangeIndex { * * @throws IOException */ - public ListenableFuture replace(ChangeData cd) throws IOException; + public void replace(ChangeData cd) throws IOException; /** * Delete a change document from the index. @@ -115,7 +113,7 @@ public interface ChangeIndex { * * @throws IOException */ - public ListenableFuture delete(ChangeData cd) throws IOException; + public void delete(ChangeData cd) throws IOException; /** * Delete all change documents from the index. diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java index 9d89b90309..0b8106b779 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java @@ -42,7 +42,7 @@ public abstract class ChangeIndexer { } @Override - public Callable indexTask(ChangeData cd) { + public Callable indexTask(ChangeData cd) { return new Callable() { @Override public Void call() { @@ -52,7 +52,7 @@ public abstract class ChangeIndexer { } @Override - public Callable deleteTask(ChangeData cd) { + public Callable deleteTask(ChangeData cd) { return new Callable() { @Override public Void call() { @@ -81,7 +81,7 @@ public abstract class ChangeIndexer { /** * Start indexing a change. * - * @param change change to index. + * @param cd change to index. * @return future for the indexing task. */ public ListenableFuture index(ChangeData cd) { @@ -96,7 +96,7 @@ public abstract class ChangeIndexer { * @param cd change to index. * @return unstarted runnable to index the change. */ - public abstract Callable indexTask(ChangeData cd); + public abstract Callable indexTask(ChangeData cd); /** * Start deleting a change. @@ -111,7 +111,7 @@ public abstract class ChangeIndexer { /** * Start deleting a change. * - * @param change change to delete. + * @param cd change to delete. * @return future for the deleting task. */ public ListenableFuture delete(ChangeData cd) { @@ -126,5 +126,5 @@ public abstract class ChangeIndexer { * @param cd change to delete. * @return unstarted runnable to delete the change. */ - public abstract Callable deleteTask(ChangeData cd); + public abstract Callable deleteTask(ChangeData cd); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java index 715e96bbdb..ef89a54d40 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java @@ -109,7 +109,7 @@ public class ChangeIndexerImpl extends ChangeIndexer { }); if (indexes != null) { for (ChangeIndex i : indexes.getWriteIndexes()) { - apply(i, cd); // TODO(dborowitz): Parallelize these + apply(i, cd); } } else { apply(index, cd); diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java b/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java index dd1a69e924..c92c9a61aa 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java @@ -15,7 +15,6 @@ package com.google.gerrit.server.index; import com.google.common.collect.ImmutableList; -import com.google.common.util.concurrent.ListenableFuture; import com.google.gerrit.server.query.Predicate; import com.google.gerrit.server.query.QueryParseException; import com.google.gerrit.server.query.change.ChangeData; @@ -69,17 +68,17 @@ class FakeIndex implements ChangeIndex { } @Override - public ListenableFuture insert(ChangeData cd) { + public void insert(ChangeData cd) { throw new UnsupportedOperationException(); } @Override - public ListenableFuture replace(ChangeData cd) { + public void replace(ChangeData cd) { throw new UnsupportedOperationException(); } @Override - public ListenableFuture delete(ChangeData cd) { + public void delete(ChangeData cd) { throw new UnsupportedOperationException(); } diff --git a/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java b/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java index b0c1762605..79e6c7ef2b 100644 --- a/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java +++ b/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java @@ -22,8 +22,6 @@ import static com.google.gerrit.solr.IndexVersionCheck.solrIndexConfig; import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.lucene.QueryBuilder; import com.google.gerrit.reviewdb.client.Change; @@ -126,7 +124,7 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener { } @Override - public ListenableFuture insert(ChangeData cd) throws IOException { + public void insert(ChangeData cd) throws IOException { String id = cd.getId().toString(); SolrInputDocument doc = toDocument(cd); try { @@ -142,11 +140,10 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener { } commit(openIndex); commit(closedIndex); - return Futures.immediateFuture(null); } @Override - public ListenableFuture replace(ChangeData cd) throws IOException { + public void replace(ChangeData cd) throws IOException { String id = cd.getId().toString(); SolrInputDocument doc = toDocument(cd); try { @@ -162,11 +159,10 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener { } commit(openIndex); commit(closedIndex); - return Futures.immediateFuture(null); } @Override - public ListenableFuture delete(ChangeData cd) throws IOException { + public void delete(ChangeData cd) throws IOException { String id = cd.getId().toString(); try { if (cd.getChange().getStatus().isOpen()) { @@ -176,7 +172,6 @@ class SolrChangeIndex implements ChangeIndex, LifecycleListener { closedIndex.deleteById(id); commit(closedIndex); } - return Futures.immediateFuture(null); } catch (SolrServerException e) { throw new IOException(e); }