Take into account that config read could fail on start()
If there is a problem reading All-Projects when the plugin is started,
the plugin configuration is null and this can cause a
NullPointerException later.
Consider a null config "no configs" when finding relevant entries. In
the REST call, return a 500 with an appropiate message.
Change-Id: Iff503f74ffcff25b160c46486909e4ee367475c9
diff --git a/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java b/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java
index d31f660..d6f471d 100644
--- a/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java
+++ b/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java
@@ -252,6 +252,9 @@
/** for debugging. */
private String configurationToString() {
+ if (config == null) {
+ return "No config loaded (could not read All-Projects)";
+ }
StringBuilder b = new StringBuilder();
b.append("Supermanifest config (").append(config.size()).append(") {\n");
for (ConfigEntry c : config) {
@@ -331,6 +334,13 @@
identifiedUser.get().getAccountId().get(),
configurationToString());
+ if (config == null) {
+ error(
+ "Plugin could not read conf from All-Projects (processing %s:%s)",
+ manifestProject, manifestBranch);
+ throw new PreconditionFailedException("Plugin could not read conf from All-Projects");
+ }
+
List<ConfigEntry> relevantConfigs =
findRelevantConfigs(resource.getProjectState().getProject().getName(), resource.getRef());
if (relevantConfigs.isEmpty()) {
@@ -355,6 +365,9 @@
private List<ConfigEntry> findRelevantConfigs(String project, String refName) {
List<ConfigEntry> relevantConfigs = new ArrayList<>();
+ if (config == null) {
+ return relevantConfigs;
+ }
for (ConfigEntry c : config) {
if (!c.srcRepoKey.get().equals(project)) {
continue;