diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishChangeEdit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishChangeEdit.java index 952636f80f..5db46ae415 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishChangeEdit.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishChangeEdit.java @@ -28,7 +28,6 @@ import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.RestView; import com.google.gerrit.server.edit.ChangeEdit; import com.google.gerrit.server.edit.ChangeEditUtil; -import com.google.gerrit.server.project.InvalidChangeOperationException; import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -84,7 +83,7 @@ public class PublishChangeEdit implements @Override public Response apply(ChangeResource rsrc, Publish.Input in) throws AuthException, ResourceConflictException, NoSuchChangeException, - IOException, InvalidChangeOperationException, OrmException { + IOException, OrmException { Optional edit = editUtil.byChange(rsrc.getChange()); if (!edit.isPresent()) { throw new ResourceConflictException(String.format( diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java index dadd5af6ca..933007d705 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java @@ -143,13 +143,11 @@ public class ChangeEditUtil { * @param edit change edit to publish * @throws NoSuchChangeException * @throws IOException - * @throws InvalidChangeOperationException * @throws OrmException * @throws ResourceConflictException */ public void publish(ChangeEdit edit) throws NoSuchChangeException, - IOException, InvalidChangeOperationException, - OrmException, ResourceConflictException { + IOException, OrmException, ResourceConflictException { Change change = edit.getChange(); try (Repository repo = gitManager.openRepository(change.getProject()); RevWalk rw = new RevWalk(repo); @@ -160,12 +158,16 @@ public class ChangeEditUtil { "only edit for current patch set can be published"); } - Change updatedChange = - insertPatchSet(edit, change, repo, rw, basePatchSet, - squashEdit(rw, inserter, edit.getEditCommit(), basePatchSet)); - // TODO(davido): This should happen in the same BatchRefUpdate. - deleteRef(repo, edit); - indexer.index(db.get(), updatedChange); + try { + Change updatedChange = + insertPatchSet(edit, change, repo, rw, basePatchSet, + squashEdit(rw, inserter, edit.getEditCommit(), basePatchSet)); + // TODO(davido): This should happen in the same BatchRefUpdate. + deleteRef(repo, edit); + indexer.index(db.get(), updatedChange); + } catch (InvalidChangeOperationException e) { + throw new ResourceConflictException(e.getMessage()); + } } } diff --git a/plugins/cookbook-plugin b/plugins/cookbook-plugin index a93641db50..f5edbf0b1d 160000 --- a/plugins/cookbook-plugin +++ b/plugins/cookbook-plugin @@ -1 +1 @@ -Subproject commit a93641db50f52e24421f75671bb1d4df268dd722 +Subproject commit f5edbf0b1db7186df382659f29f741333eaf4923