From 5dc7497802be3b1c049f723f71686dee3c4c4894 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 8 May 2015 12:27:40 +0000 Subject: [PATCH] Reseed: Don't reseed while shutting down (ticket #1565) --- .../i2p/router/networkdb/kademlia/PersistentDataStore.java | 6 ++++++ .../src/net/i2p/router/networkdb/reseed/ReseedChecker.java | 7 +++++++ .../java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java index 5691faa32..01c5e991f 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java @@ -348,6 +348,12 @@ class PersistentDataStore extends TransientDataStore { public String getName() { return "DB Read Job"; } public void runJob() { + if (getContext().router().gracefulShutdownInProgress()) { + // don't cause more disk I/O while saving, + // or start a reseed + requeue(READ_DELAY); + return; + } long now = getContext().clock().now(); // check directory mod time to save a lot of object churn in scanning all the file names long lastMod = _dbDir.lastModified(); diff --git a/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java b/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java index 2ea6e7113..0fb2378a7 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java @@ -63,6 +63,13 @@ public class ReseedChecker { return false; } + if (_context.router().gracefulShutdownInProgress()) { + String s = "Only " + count + " peers remaining but reseed disabled by shutdown in progress"; + _lastError = s; + _log.logAlways(Log.WARN, s); + return false; + } + // we check the i2p installation directory for a flag telling us not to reseed, // but also check the home directory for that flag too, since new users installing i2p // don't have an installation directory that they can put the flag in yet. 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 8e0a6cec5..fbffa2e8b 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -504,6 +504,10 @@ public class Reseeder { private int reseed(List URLList, boolean echoStatus) { int total = 0; for (int i = 0; i < URLList.size() && _isRunning; i++) { + if (_context.router().gracefulShutdownInProgress()) { + System.out.println("Reseed aborted, shutdown in progress"); + return total; + } URL url = URLList.get(i); int dl = 0; if (ENABLE_SU3) {