Submit whole topic: check if all changes are submittable
We were checking only if the current change was submittable, but we
really need to check all changes.
Change-Id: Ief424e7bd32f5d552b3adc18fc3c7c2ff7c46df2
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
index cadd55c..86ce3b99 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
@@ -391,16 +391,20 @@
ReviewDb db = dbProvider.get();
ChangeData cd = changeDataFactory.create(db, rsrc.getControl());
- List<SubmitRecord> submitRecords = checkSubmitRule(cd,
- rsrc.getPatchSet(), force);
+ List<ChangeData> changesByTopic = queryProvider.get().byTopicOpen(topic);
+ String problems = problemsForSubmittingChanges(changesByTopic, caller);
+ if (problems != null) {
+ throw new ResourceConflictException(problems);
+ }
Change change = rsrc.getChange();
ChangeUpdate update = updateFactory.create(rsrc.getControl(), timestamp);
+
+ List<SubmitRecord> submitRecords = checkSubmitRule(cd,
+ rsrc.getPatchSet(), force);
update.submit(submitRecords);
db.changes().beginTransaction(change.getId());
-
- List<ChangeData> changesByTopic = queryProvider.get().byTopicOpen(topic);
try {
BatchMetaDataUpdate batch = approve(rsrc, update, caller, timestamp);
// Write update commit after all normalized label commits.