From: Simon Brandhof Date: Wed, 21 Sep 2016 10:11:29 +0000 (+0200) Subject: Improve handling of some thread interruptions X-Git-Tag: 6.2-RC1~617 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=966f777895168d42a31cd109dd7a3d136c8cb9fe;p=sonarqube.git Improve handling of some thread interruptions --- diff --git a/server/sonar-process-monitor/src/main/java/org/sonar/process/monitor/StreamGobbler.java b/server/sonar-process-monitor/src/main/java/org/sonar/process/monitor/StreamGobbler.java index ffbfcb06dfb..6020f255e36 100644 --- a/server/sonar-process-monitor/src/main/java/org/sonar/process/monitor/StreamGobbler.java +++ b/server/sonar-process-monitor/src/main/java/org/sonar/process/monitor/StreamGobbler.java @@ -68,7 +68,8 @@ class StreamGobbler extends Thread { try { gobbler.join(); } catch (InterruptedException ignored) { - // consider as finished + // consider as finished, restore the interrupted flag + Thread.currentThread().interrupt(); } } } diff --git a/server/sonar-process/src/main/java/org/sonar/process/ProcessEntryPoint.java b/server/sonar-process/src/main/java/org/sonar/process/ProcessEntryPoint.java index 2ca262205ce..af3dd630291 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/ProcessEntryPoint.java +++ b/server/sonar-process/src/main/java/org/sonar/process/ProcessEntryPoint.java @@ -135,7 +135,7 @@ public class ProcessEntryPoint implements Stoppable { stopperThread.join(); lifecycle.tryToMoveTo(Lifecycle.State.STOPPED); } catch (InterruptedException e) { - // nothing to do, the process is going to be exited + Thread.currentThread().interrupt(); } exit.exit(0); } diff --git a/server/sonar-process/src/main/java/org/sonar/process/StopWatcher.java b/server/sonar-process/src/main/java/org/sonar/process/StopWatcher.java index 3248e519558..42cb2e9c3b2 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/StopWatcher.java +++ b/server/sonar-process/src/main/java/org/sonar/process/StopWatcher.java @@ -56,6 +56,8 @@ public class StopWatcher extends Thread { Thread.sleep(delayMs); } catch (InterruptedException ignored) { watching = false; + // restore interrupted flag + Thread.currentThread().interrupt(); } } } diff --git a/server/sonar-search/src/main/java/org/sonar/search/SearchServer.java b/server/sonar-search/src/main/java/org/sonar/search/SearchServer.java index ee6afaf3487..d8bf14841fc 100644 --- a/server/sonar-search/src/main/java/org/sonar/search/SearchServer.java +++ b/server/sonar-search/src/main/java/org/sonar/search/SearchServer.java @@ -66,12 +66,13 @@ public class SearchServer implements Monitored { @Override public void awaitStop() { - while (node != null && !node.isClosed()) { - try { + try { + while (node != null && !node.isClosed()) { Thread.sleep(200L); - } catch (InterruptedException e) { - // Ignore } + } catch (InterruptedException e) { + // Restore the interrupted status + Thread.currentThread().interrupt(); } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java index 2c68874a029..e27f7124b81 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java @@ -147,7 +147,8 @@ public class CommandExecutor { try { thread.join(); } catch (InterruptedException e) { - LOG.error("InterruptedException while waiting finish of " + thread.toString(), e); + // considered as finished, restore the interrupted flag + Thread.currentThread().interrupt(); } } }