Fixes NPE when migrating old Changes to Schema 108
The Schema 108 upgrade needs to migrate all open changes to include
the new groups column. However if the change is in one of the old
deprecated states (i.e. submitted status, which has now been removed)
the migration should continue anyway and considering it as
an open state.
Change-Id: I19be8dee29112fb3bba8c2f52bfa6d2a11246ea7
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_108.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_108.java
index 8cbf119..cfafb37 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_108.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_108.java
@@ -19,6 +19,7 @@
import com.google.common.collect.Multimap;
import com.google.common.collect.SetMultimap;
import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.reviewdb.client.Change.Status;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
@@ -143,9 +144,15 @@
SetMultimap<Project.NameKey, Change.Id> openByProject =
HashMultimap.create();
for (Change c : db.changes().all()) {
- if (c.getStatus().isOpen()) {
- openByProject.put(c.getProject(), c.getId());
+ Status status = c.getStatus();
+ if (status != null && status.isClosed()) {
+ continue;
}
+
+ // The old "submitted" state is not supported anymore
+ // (thus status is null) but it was an opened state and needs
+ // to be migrated as such
+ openByProject.put(c.getProject(), c.getId());
}
return openByProject;
}