Fix NullPointerException in the hasImplicitMerge.
Users reported Internal Server Error with the following cause:
java.lang.NullPointerException
at com.google.gerrit.server.submit.MergeOp.hasImplicitMerges(MergeOp.java:1015)
I couldn't reproduce it in tests, but based on the code it looks like
some commits hasn't been parsed and have null parents. When a commit is
parsed it always has a non-null parents (empty array if there are no
parents).
Release-Notes: skip
Google-Bug-Id: b/324598147
Change-Id: Ic8f62e875e24c1ad940a8acddd56e7c988c44cab
diff --git a/java/com/google/gerrit/server/submit/MergeOp.java b/java/com/google/gerrit/server/submit/MergeOp.java
index c1e8093..1e76737 100644
--- a/java/com/google/gerrit/server/submit/MergeOp.java
+++ b/java/com/google/gerrit/server/submit/MergeOp.java
@@ -1012,6 +1012,14 @@
implicitMergesRoots.remove(entry.getKey());
continue;
}
+ if (entry.getValue() == null) {
+ logger.atSevere().log("The entry value is null for the key %s", entry.getKey());
+ }
+ rw.parseBody(entry.getValue());
+ if (entry.getValue().getParents() == null) {
+ logger.atSevere().log(
+ "The entry value has null parents. The value is: %s", entry.getValue());
+ }
for (RevCommit parent : entry.getValue().getParents()) {
reachableCommits.push(Map.entry(entry.getKey(), parent));
}