Merge "ReceiveCommits: Retry request validation during auto-close"
This commit is contained in:
@@ -2923,7 +2923,7 @@ class ReceiveCommits {
|
|||||||
|
|
||||||
for (ReplaceRequest req : replaceAndClose) {
|
for (ReplaceRequest req : replaceAndClose) {
|
||||||
Change.Id id = req.notes.getChangeId();
|
Change.Id id = req.notes.getChangeId();
|
||||||
if (!req.validate(true)) {
|
if (!executeRequestValidation(() -> req.validate(true))) {
|
||||||
logDebug("Not closing {} because validation failed", id);
|
logDebug("Not closing {} because validation failed", id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -2972,6 +2972,20 @@ class ReceiveCommits {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private <T> T executeRequestValidation(Action<T> action)
|
||||||
|
throws IOException, PermissionBackendException, OrmException {
|
||||||
|
try {
|
||||||
|
// The request validation needs to do an account query to lookup accounts by preferred email,
|
||||||
|
// if that index query fails the request validation should be retried.
|
||||||
|
return retryHelper.execute(ActionType.INDEX_QUERY, action, OrmException.class::isInstance);
|
||||||
|
} catch (Exception t) {
|
||||||
|
Throwables.throwIfInstanceOf(t, IOException.class);
|
||||||
|
Throwables.throwIfInstanceOf(t, PermissionBackendException.class);
|
||||||
|
Throwables.throwIfInstanceOf(t, OrmException.class);
|
||||||
|
throw new OrmException(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void updateAccountInfo() {
|
private void updateAccountInfo() {
|
||||||
if (setFullNameTo == null) {
|
if (setFullNameTo == null) {
|
||||||
return;
|
return;
|
||||||
|
Reference in New Issue
Block a user