From 835ed6d9bbd71aacfbf117b15786bb49bd5ec661 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Mon, 10 Sep 2012 17:25:00 +0000
Subject: [PATCH] boost priority of shutdown thread

---
 router/java/src/net/i2p/router/Router.java            | 3 +++
 router/java/src/net/i2p/router/tasks/OOMListener.java | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index 11b0274c6e..236fe0be74 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -766,6 +766,9 @@ public class Router implements RouterClock.ClockShiftListener {
      *  NOT to be called by others, use shutdown().
      */
     public void shutdown2(int exitCode) {
+        // help us shut down esp. after OOM
+        int priority = (exitCode == EXIT_OOM) ? Thread.MAX_PRIORITY - 1 : Thread.NORM_PRIORITY + 2;
+        Thread.currentThread().setPriority(priority);
         _shutdownInProgress = true;
         _log.log(Log.CRIT, "Starting final shutdown(" + exitCode + ')');
         // So we can get all the way to the end
diff --git a/router/java/src/net/i2p/router/tasks/OOMListener.java b/router/java/src/net/i2p/router/tasks/OOMListener.java
index a9650c7bd2..6fc9b92cde 100644
--- a/router/java/src/net/i2p/router/tasks/OOMListener.java
+++ b/router/java/src/net/i2p/router/tasks/OOMListener.java
@@ -18,6 +18,8 @@ public class OOMListener implements I2PThread.OOMEventListener {
     }
 
     public void outOfMemory(OutOfMemoryError oom) { 
+        // boost priority to help us shut down
+        Thread.currentThread().setPriority(Thread.MAX_PRIORITY - 1);
         Router.clearCaches();
         Log log = _context.logManager().getLog(Router.class);
         log.log(Log.CRIT, "Thread ran out of memory, shutting down I2P", oom);
-- 
GitLab