Merge branch 'stable-3.11' into stable-3.12
* stable-3.11:
Fix rollback implementation
Change-Id: I9a67583e25c36df84a80eb54d427a602c1995255
diff --git a/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbRefUpdate.java b/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbRefUpdate.java
index e9809e1..7c95d48 100644
--- a/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbRefUpdate.java
+++ b/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/SharedRefDbRefUpdate.java
@@ -39,6 +39,7 @@
private final String projectName;
private final RefUpdateValidator.Factory refValidatorFactory;
private final RefUpdateValidator refUpdateValidator;
+ private final RefDatabase refDatabase;
/** {@code SharedRefDbRefUpdate} Factory for Guice assisted injection. */
public interface Factory {
@@ -71,6 +72,7 @@
refUpdateBase = refUpdate;
this.projectName = projectName;
this.refValidatorFactory = refValidatorFactory;
+ this.refDatabase = refDb;
refUpdateValidator = this.refValidatorFactory.create(this.projectName, refDb, ignoredRefs);
}
@@ -309,6 +311,9 @@
private Result rollback(ObjectId objectId, NoParameterFunction<Result> updateFunction)
throws IOException {
+ if (objectId == null || ObjectId.zeroId().equals(objectId)) {
+ return refDatabase.newUpdate(getRef().getName(), true).delete();
+ }
refUpdateBase.setExpectedOldObjectId(refUpdateBase.getNewObjectId());
refUpdateBase.setNewObjectId(objectId);
return updateFunction.invoke();