From 710eb58b26299acdc3595646371cb23e3d7b7dd5 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Sun, 24 Sep 2017 23:22:59 +0200 Subject: [PATCH] SONAR-9802 fix NPE when app node is starting --- .../cluster/ProcessInfoProvider.java | 4 ++- .../cluster/ProcessInfoProviderTest.java | 28 ++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProvider.java b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProvider.java index a2f106b5a4f..6cba07a7be2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProvider.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProvider.java @@ -55,7 +55,9 @@ public class ProcessInfoProvider implements Startable { public static ProtobufSystemInfo.SystemInfo provide() { ProtobufSystemInfo.SystemInfo.Builder protobuf = ProtobufSystemInfo.SystemInfo.newBuilder(); - instance.sections.forEach(section -> protobuf.addSections(section.toProtobuf())); + if (instance != null) { + instance.sections.forEach(section -> protobuf.addSections(section.toProtobuf())); + } return protobuf.build(); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProviderTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProviderTest.java index afc2ebcc4cb..d418ad254d6 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProviderTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/ProcessInfoProviderTest.java @@ -33,19 +33,6 @@ public class ProcessInfoProviderTest { @Rule public ExpectedException expectedException = ExpectedException.none(); - @Test - public void set_self_as_statically_shared_instance() { - ProcessInfoProvider underTest = new ProcessInfoProvider(new SystemInfoSection[0]); - - underTest.start(); - assertThat(ProcessInfoProvider.provide()).isNotNull(); - - underTest.stop(); - - expectedException.expect(NullPointerException.class); - ProcessInfoProvider.provide(); - } - @Test public void remove_global_sections_from_results() { ProcessInfoProvider underTest = new ProcessInfoProvider(new SystemInfoSection[]{ @@ -72,4 +59,19 @@ public class ProcessInfoProviderTest { underTest.stop(); } + + @Test + public void empty_result_is_returned_if_not_started_yet() { + ProcessInfoProvider underTest = new ProcessInfoProvider(new SystemInfoSection[]{ + new TestSystemInfoSection("foo"), + new TestSystemInfoSection("bar")}); + + assertThat(ProcessInfoProvider.provide().getSectionsCount()).isEqualTo(0); + + underTest.start(); + assertThat(ProcessInfoProvider.provide().getSectionsCount()).isEqualTo(2); + + underTest.stop(); + assertThat(ProcessInfoProvider.provide().getSectionsCount()).isEqualTo(0); + } } -- 2.39.5