More reliably get futures returned by ChangeIndexer
Convert futures to be CheckedFuture<?, IOException>s so calling
checkedGet() does not result in too many extra exception types. Rename
the methods to {index,delete}Async so it is clear that these just
launch a future. For all usages, make sure checkedGet() is invoked on
the future, either immediately or after another block of non-Change-
mutating code.
Change-Id: I18b55b0b03b2be0a70995a0b08a4fc3193db96e3
This commit is contained in:
@@ -16,6 +16,7 @@ package com.google.gerrit.server.change;
|
||||
|
||||
import static com.google.gerrit.reviewdb.client.Change.INITIAL_PATCH_SET_ID;
|
||||
|
||||
import com.google.common.util.concurrent.CheckedFuture;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.data.LabelTypes;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
@@ -43,6 +44,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -150,7 +152,7 @@ public class ChangeInserter {
|
||||
return patchSetInfo;
|
||||
}
|
||||
|
||||
public void insert() throws OrmException {
|
||||
public void insert() throws OrmException, IOException {
|
||||
ReviewDb db = dbProvider.get();
|
||||
db.changes().beginTransaction(change.getId());
|
||||
try {
|
||||
@@ -169,7 +171,7 @@ public class ChangeInserter {
|
||||
db.changeMessages().insert(Collections.singleton(changeMessage));
|
||||
}
|
||||
|
||||
indexer.index(change);
|
||||
CheckedFuture<?, IOException> indexFuture = indexer.indexAsync(change);
|
||||
gitRefUpdated.fire(change.getProject(), patchSet.getRefName(),
|
||||
ObjectId.zeroId(), commit);
|
||||
|
||||
@@ -190,5 +192,6 @@ public class ChangeInserter {
|
||||
log.error("Cannot send email for new change " + change.getId(), err);
|
||||
}
|
||||
}
|
||||
indexFuture.checkedGet();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user