From: Simon Brandhof Date: Thu, 7 Aug 2014 15:42:34 +0000 (+0200) Subject: SONAR-4898 do not monitor freshness of pings in master process X-Git-Tag: 4.5-RC1~209 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=cbc4901c0f9e13b32f79bce477fe8d7e42977425;p=sonarqube.git SONAR-4898 do not monitor freshness of pings in master process --- diff --git a/server/sonar-process/src/main/java/org/sonar/process/Monitor.java b/server/sonar-process/src/main/java/org/sonar/process/Monitor.java index c52ba7e222c..576829f13c9 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/Monitor.java +++ b/server/sonar-process/src/main/java/org/sonar/process/Monitor.java @@ -23,10 +23,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -35,11 +32,9 @@ import java.util.concurrent.TimeUnit; public class Monitor extends Thread implements Terminable { private static final long PING_DELAY_MS = 3000L; - private static final long TIMEOUT_MS = 15000L; private final static Logger LOGGER = LoggerFactory.getLogger(Monitor.class); private volatile List processes; - private final Map pings; private final ScheduledFuture watch; private final ScheduledExecutorService monitor; @@ -49,7 +44,6 @@ public class Monitor extends Thread implements Terminable { public Monitor() { super("Process Monitor"); processes = new ArrayList(); - pings = new ConcurrentHashMap(); monitor = Executors.newScheduledThreadPool(1); watch = monitor.scheduleWithFixedDelay(new ProcessWatch(), 0L, PING_DELAY_MS, TimeUnit.MILLISECONDS); } @@ -65,8 +59,7 @@ public class Monitor extends Thread implements Terminable { try { ProcessMXBean mBean = process.getProcessMXBean(); if (mBean != null) { - long time = mBean.ping(); - pings.put(process.getName(), time); + mBean.ping(); } } catch (Exception e) { // fail to ping, do nothing @@ -80,19 +73,10 @@ public class Monitor extends Thread implements Terminable { */ public void registerProcess(ProcessWrapper process) throws InterruptedException { processes.add(process); - pings.put(process.getName(), System.currentTimeMillis()); // starts a monitoring thread process.start(); } - private boolean processIsValid(ProcessWrapper processWrapper) { - if (ProcessUtils.isAlive(processWrapper.process())) { - long now = System.currentTimeMillis(); - return now - pings.get(processWrapper.getName()) < TIMEOUT_MS; - } - return false; - } - /** * Check continuously that registered processes are still up. If any process is down or does not answer to pings * during the max allowed period, then thread exits. @@ -103,8 +87,8 @@ public class Monitor extends Thread implements Terminable { boolean ok = true; while (ok) { for (ProcessWrapper process : processes) { - if (!processIsValid(process)) { - LOGGER.info("{} is down, stopping processes", process.getName()); + if (!ProcessUtils.isAlive(process.process())) { + LOGGER.info("{} is down, stopping all other processes", process.getName()); ok = false; interrupt(); } @@ -129,7 +113,7 @@ public class Monitor extends Thread implements Terminable { watch.cancel(true); } - for (int i=processes.size()-1 ; i>=0 ; i--) { + for (int i = processes.size() - 1; i >= 0; i--) { processes.get(i).terminate(); } processes.clear();