diff options
author | Eric Hartmann <hartmann.eric@gmail.com> | 2017-09-01 17:40:45 +0200 |
---|---|---|
committer | Eric Hartmann <hartmann.eric@gmail.Com> | 2017-09-04 16:06:10 +0200 |
commit | 88bdd17e11b618321f7fee543e08e363fdb5763b (patch) | |
tree | 0b7cffcb629c49d98e23297c4dc7cb53817ca523 | |
parent | 804c846979f26e484b779a83c7f058a8a5ae3b4a (diff) | |
download | sonarqube-88bdd17e11b618321f7fee543e08e363fdb5763b.tar.gz sonarqube-88bdd17e11b618321f7fee543e08e363fdb5763b.zip |
SONAR-9395 Stop the logback context during shutdown
3 files changed, 29 insertions, 21 deletions
diff --git a/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/AppStateClusterImpl.java b/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/AppStateClusterImpl.java index a5705f5adf3..5e5f2b0c717 100644 --- a/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/AppStateClusterImpl.java +++ b/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/AppStateClusterImpl.java @@ -20,7 +20,6 @@ package org.sonar.application.cluster; -import com.hazelcast.core.HazelcastInstanceNotActiveException; import java.util.EnumMap; import java.util.Map; import java.util.Optional; @@ -88,12 +87,7 @@ public class AppStateClusterImpl implements AppState { @Override public void close() { - try { - hazelcastCluster.close(); - } catch (HazelcastInstanceNotActiveException e) { - // hazelcastCluster may be already closed by the shutdown hook - LOGGER.debug("Unable to close Hazelcast cluster", e); - } + hazelcastCluster.close(); } @Override diff --git a/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/HazelcastCluster.java b/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/HazelcastCluster.java index 5572ba7b8e9..a1e4f77fdba 100644 --- a/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/HazelcastCluster.java +++ b/server/sonar-process-monitor/src/main/java/org/sonar/application/cluster/HazelcastCluster.java @@ -29,6 +29,7 @@ import com.hazelcast.core.EntryEvent; import com.hazelcast.core.EntryListener; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; +import com.hazelcast.core.HazelcastInstanceNotActiveException; import com.hazelcast.core.IAtomicReference; import com.hazelcast.core.ILock; import com.hazelcast.core.MapEvent; @@ -39,6 +40,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.application.AppStateListener; import org.sonar.process.ProcessId; @@ -51,6 +54,8 @@ import static org.sonar.process.cluster.ClusterObjectKeys.OPERATIONAL_PROCESSES; import static org.sonar.process.cluster.ClusterObjectKeys.SONARQUBE_VERSION; public class HazelcastCluster implements AutoCloseable { + private static final Logger LOGGER = LoggerFactory.getLogger(HazelcastCluster.class); + private final List<AppStateListener> listeners = new ArrayList<>(); private final ReplicatedMap<ClusterProcess, Boolean> operationalProcesses; private final String operationalProcessListenerUUID; @@ -145,20 +150,25 @@ public class HazelcastCluster implements AutoCloseable { @Override public void close() { if (hzInstance != null) { - // Removing listeners - operationalProcesses.removeEntryListener(operationalProcessListenerUUID); - hzInstance.getClientService().removeClientListener(clientListenerUUID); - - // Removing the operationalProcess from the replicated map - operationalProcesses.keySet().forEach( - clusterNodeProcess -> { - if (clusterNodeProcess.getNodeUuid().equals(getLocalUUID())) { - operationalProcesses.remove(clusterNodeProcess); - } - }); - - // Shutdown Hazelcast properly - hzInstance.shutdown(); + try { + // Removing listeners + operationalProcesses.removeEntryListener(operationalProcessListenerUUID); + hzInstance.getClientService().removeClientListener(clientListenerUUID); + + // Removing the operationalProcess from the replicated map + operationalProcesses.keySet().forEach( + clusterNodeProcess -> { + if (clusterNodeProcess.getNodeUuid().equals(getLocalUUID())) { + operationalProcesses.remove(clusterNodeProcess); + } + }); + + // Shutdown Hazelcast properly + hzInstance.shutdown(); + } catch (HazelcastInstanceNotActiveException e) { + // hazelcastCluster may be already closed by the shutdown hook + LOGGER.debug("Unable to close Hazelcast cluster", e); + } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/web/PlatformServletContextListener.java b/server/sonar-server/src/main/java/org/sonar/server/platform/web/PlatformServletContextListener.java index 4a9bdd2c122..b09c1003a3a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/web/PlatformServletContextListener.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/web/PlatformServletContextListener.java @@ -19,11 +19,13 @@ */ package org.sonar.server.platform.web; +import ch.qos.logback.classic.LoggerContext; import java.util.Enumeration; import java.util.Properties; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +import org.slf4j.LoggerFactory; import org.sonar.api.utils.log.Loggers; import org.sonar.server.platform.Platform; @@ -64,6 +66,8 @@ public final class PlatformServletContextListener implements ServletContextListe @Override public void contextDestroyed(ServletContextEvent event) { Platform.getInstance().doStop(); + LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); + loggerContext.stop(); } } |