ReviewDbBatchUpdate: Avoid NPE when updating All-Users
If one change-update in a batch affects All-Users it is assumed that all ChangeTasks updates NoteDb. This is not true when a stack of changes is pushed and the changes(s) at the bottom of the stack are not updated, existing last patchset is pushed. Bug: Issue 11442 Change-Id: I0c828635920cc437da3da20785d3882a2e68d086
This commit is contained in:
@@ -548,6 +548,9 @@ public class ReviewDbBatchUpdate extends BatchUpdate {
|
|||||||
int objs = 0;
|
int objs = 0;
|
||||||
BatchRefUpdate allUsersRefUpdate = allUsersRepo.getRefDatabase().newBatchUpdate();
|
BatchRefUpdate allUsersRefUpdate = allUsersRepo.getRefDatabase().newBatchUpdate();
|
||||||
for (ChangeTask task : tasks) {
|
for (ChangeTask task : tasks) {
|
||||||
|
if (task.noteDbResult == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (ReceiveCommand cmd : task.noteDbResult.allUsersCommands()) {
|
for (ReceiveCommand cmd : task.noteDbResult.allUsersCommands()) {
|
||||||
allUsersRefUpdate.addCommand(cmd);
|
allUsersRefUpdate.addCommand(cmd);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2202,6 +2202,18 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
|
|||||||
assertThat(getPublishedComments(r.getChangeId())).isEmpty();
|
assertThat(getPublishedComments(r.getChangeId())).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void noEditAndUpdateAllUsersInSameChangeStack() throws Exception {
|
||||||
|
assume().that(notesMigration.readChanges()).isTrue();
|
||||||
|
List<RevCommit> commits = createChanges(2, "refs/for/master");
|
||||||
|
String id2 = byCommit(commits.get(1)).change().getKey().get();
|
||||||
|
addDraft(id2, commits.get(1).name(), newDraft(FILE_NAME, 1, "comment2"));
|
||||||
|
// First change in stack unchanged.
|
||||||
|
RevCommit unChanged = commits.remove(0);
|
||||||
|
// Publishing draft comments on change 2 updates All-Users.
|
||||||
|
amendChanges(unChanged.toObjectId(), commits, "refs/for/master%publish-comments");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pushWithDraftOptionIsDisabledPerDefault() throws Exception {
|
public void pushWithDraftOptionIsDisabledPerDefault() throws Exception {
|
||||||
for (String ref : ImmutableSet.of("refs/drafts/master", "refs/for/master%draft")) {
|
for (String ref : ImmutableSet.of("refs/drafts/master", "refs/for/master%draft")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user