From 4baff9fbab70965e7cdb397e1d09cb0fcafed2d4 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:49:55 +0000 Subject: [PATCH] * Router: Move some more threads to I2PAppThread so an OOM won't crash the router --- router/java/src/net/i2p/router/Router.java | 13 ++++++------- .../net/i2p/router/networkdb/reseed/Reseeder.java | 6 ++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 7e231097b..4ed70a772 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -41,6 +41,7 @@ import net.i2p.stat.Rate; import net.i2p.stat.RateStat; import net.i2p.stat.StatManager; import net.i2p.util.FileUtil; +import net.i2p.util.I2PAppThread; import net.i2p.util.I2PThread; import net.i2p.util.Log; import net.i2p.util.SimpleScheduler; @@ -201,6 +202,8 @@ public class Router { installUpdates(); // Apps may use this as an easy way to determine if they are in the router JVM + // But context.isRouterContext() is even easier... + // Both of these as of 0.7.9 System.setProperty("router.version", RouterVersion.VERSION); // NOW we start all the activity @@ -228,14 +231,10 @@ public class Router { } }; _shutdownHook = new ShutdownHook(_context); - _gracefulShutdownDetector = new I2PThread(new GracefulShutdown()); - _gracefulShutdownDetector.setDaemon(true); - _gracefulShutdownDetector.setName("Graceful shutdown hook"); + _gracefulShutdownDetector = new I2PAppThread(new GracefulShutdown(), "Graceful shutdown hook", true); _gracefulShutdownDetector.start(); - I2PThread watchdog = new I2PThread(new RouterWatchdog(_context)); - watchdog.setName("RouterWatchdog"); - watchdog.setDaemon(true); + Thread watchdog = new I2PAppThread(new RouterWatchdog(_context), "RouterWatchdog", true); watchdog.start(); } @@ -339,7 +338,7 @@ public class Router { long waited = System.currentTimeMillis() - before; if (_log.shouldLog(Log.INFO)) _log.info("Waited " + waited + "ms to initialize"); - + _context.jobQueue().addJob(new StartupJob(_context)); } diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index f37f01aa2..2e93cb3e0 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -15,7 +15,7 @@ import java.util.StringTokenizer; import net.i2p.I2PAppContext; import net.i2p.router.RouterContext; import net.i2p.util.EepGet; -import net.i2p.util.I2PThread; +import net.i2p.util.I2PAppThread; import net.i2p.util.Log; /** @@ -52,13 +52,15 @@ public class Reseeder { return; } else { System.setProperty(PROP_INPROGRESS, "true"); - I2PThread reseed = new I2PThread(_reseedRunner, "Reseed"); + // set to daemon so it doesn't hang a shutdown + Thread reseed = new I2PAppThread(_reseedRunner, "Reseed", true); reseed.start(); } } } + /** Todo: translate the messages sent via PROP_STATUS */ public class ReseedRunner implements Runnable, EepGet.StatusListener { private boolean _isRunning;