From c14f3d9def225f71b4026bc783ca348e176ace7b Mon Sep 17 00:00:00 2001 From: Andrei Dulvac Date: Thu, 21 Mar 2019 13:25:11 +0100 Subject: [PATCH] FELIX-6083 NPE running systemready --- .../impl/SystemReadyMonitorImpl.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/systemready/src/main/java/org/apache/felix/systemready/impl/SystemReadyMonitorImpl.java b/systemready/src/main/java/org/apache/felix/systemready/impl/SystemReadyMonitorImpl.java index fda0670666c..3471df980fb 100644 --- a/systemready/src/main/java/org/apache/felix/systemready/impl/SystemReadyMonitorImpl.java +++ b/systemready/src/main/java/org/apache/felix/systemready/impl/SystemReadyMonitorImpl.java @@ -111,17 +111,21 @@ public SystemStatus getStatus(StateType stateType) { } private void check() { - CheckStatus.State prevState = getStatus(StateType.READY).getState(); - List currentChecks = new ArrayList<>(checks); - List checkNames = currentChecks.stream().map(check -> check.getName()).collect(Collectors.toList()); - log.debug("Running system checks {}", checkNames); - List statuses = evaluateAllChecks(currentChecks); - this.curStates.set(statuses); - State currState = getStatus(StateType.READY).getState(); - if (currState != prevState) { - manageMarkerService(currState); + try { + CheckStatus.State prevState = getStatus(StateType.READY).getState(); + List currentChecks = new ArrayList<>(checks); + List checkNames = currentChecks.stream().map(check -> check.getName()).collect(Collectors.toList()); + log.debug("Running system checks {}", checkNames); + List statuses = evaluateAllChecks(currentChecks); + this.curStates.set(statuses); + State currState = getStatus(StateType.READY).getState(); + if (currState != prevState) { + manageMarkerService(currState); + } + log.debug("Checks finished"); + } catch (Exception e) { + log.warn("Exception when running checks", e); } - log.debug("Checks finished"); } private List evaluateAllChecks(List currentChecks) { @@ -136,7 +140,7 @@ private void manageMarkerService(CheckStatus.State currState) { SystemReady readyService = new SystemReady() { }; sreg = context.registerService(SystemReady.class, readyService, null); - } else { + } else if (sreg != null) { sreg.unregister(); } }