ReceiveCommits: Retry change queries to find changes for pushed commits
We usually retry change queries if they fail. It's an oversight that we
didn't have retrying here yet.
Bug: Google b/348209481
Change-Id: Iddb6e7acd874cc5364066a76496810c3f04facdc
Signed-off-by: Edwin Kempin <ekempin@google.com>
Release-Notes: skip
diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
index 6b7f1f0..9f7b763 100644
--- a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
+++ b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
@@ -414,7 +414,6 @@
private final DynamicSet<PerformanceLogger> performanceLoggers;
private final PermissionBackend permissionBackend;
private final ProjectCache projectCache;
- private final Provider<InternalChangeQuery> queryProvider;
private final Provider<MergeOp> mergeOpProvider;
private final Provider<MergeOpRepoManager> ormProvider;
private final ReceiveConfig receiveConfig;
@@ -505,7 +504,6 @@
DynamicSet<PerformanceLogger> performanceLoggers,
PermissionBackend permissionBackend,
ProjectCache projectCache,
- Provider<InternalChangeQuery> queryProvider,
Provider<MergeOp> mergeOpProvider,
Provider<MergeOpRepoManager> ormProvider,
PublishCommentsOp.Factory publishCommentsOp,
@@ -568,7 +566,6 @@
this.psUtil = psUtil;
this.performanceLoggers = performanceLoggers;
this.publishCommentsOp = publishCommentsOp;
- this.queryProvider = queryProvider;
this.receiveConfig = receiveConfig;
this.refValidatorsFactory = refValidatorsFactory;
this.replaceOpFactory = replaceOpFactory;
@@ -2931,18 +2928,27 @@
private ChangeLookup lookupByChangeKey(RevCommit c, Change.Key key) {
try (TraceTimer traceTimer = newTimer("lookupByChangeKey")) {
- List<ChangeData> byBranchKeyExactMatch =
- queryProvider.get().byBranchKey(magicBranch.dest, key).stream()
- .filter(cd -> cd.change().getKey().equals(key))
- .collect(toList());
- return new ChangeLookup(c, key, byBranchKeyExactMatch);
+ List<ChangeData> byBranchKey =
+ retryHelper
+ .changeIndexQuery(
+ "lookupByChangeKey",
+ q ->
+ q.byBranchKey(magicBranch.dest, key).stream()
+ .filter(cd -> cd.change().getKey().equals(key))
+ .collect(toList()))
+ .call();
+ return new ChangeLookup(c, key, byBranchKey);
}
}
private ChangeLookup lookupByCommit(RevCommit c) {
try (TraceTimer traceTimer = newTimer("lookupByCommit")) {
- return new ChangeLookup(
- c, null, queryProvider.get().byBranchCommit(magicBranch.dest, c.getName()));
+ List<ChangeData> byBranchCommit =
+ retryHelper
+ .changeIndexQuery(
+ "lookupByCommit", q -> q.byBranchCommit(magicBranch.dest, c.getName()))
+ .call();
+ return new ChangeLookup(c, null, byBranchCommit);
}
}