diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/RefOperationValidators.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/RefOperationValidators.java index 3641076b09..80792c30d6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/RefOperationValidators.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/validators/RefOperationValidators.java @@ -39,7 +39,7 @@ public class RefOperationValidators { public static ReceiveCommand getCommand(RefUpdate update, ReceiveCommand.Type type) { return new ReceiveCommand( - update.getOldObjectId(), update.getNewObjectId(), update.getName(), type); + update.getExpectedOldObjectId(), update.getNewObjectId(), update.getName(), type); } private final RefReceivedEvent event; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteRef.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteRef.java index 77ff37a2d4..1fadef645c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteRef.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteRef.java @@ -115,8 +115,10 @@ public class DeleteRef { } RefUpdate.Result result; RefUpdate u = r.updateRef(ref); + u.setExpectedOldObjectId(r.exactRef(ref).getObjectId()); + u.setNewObjectId(ObjectId.zeroId()); u.setForceUpdate(true); - refDeletionValidator.validateRefOperation(ref, identifiedUser.get(), u); + refDeletionValidator.validateRefOperation(resource.getName(), identifiedUser.get(), u); int remainingLockFailureCalls = MAX_LOCK_FAILURE_CALLS; for (; ; ) { try { @@ -222,6 +224,8 @@ public class DeleteRef { RefUpdate u = r.updateRef(refName); u.setForceUpdate(true); + u.setExpectedOldObjectId(r.exactRef(refName).getObjectId()); + u.setNewObjectId(ObjectId.zeroId()); refDeletionValidator.validateRefOperation(project.getName(), identifiedUser.get(), u); return command; }