From 981946c95047a798e42d44829f4c3d8d6a45cdda Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Wed, 8 Feb 2023 08:05:30 -0500
Subject: [PATCH] NetDB: Don't explore if we have enough RIs

---
 .../i2p/router/networkdb/kademlia/StartExplorersJob.java  | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java
index 696d86b74b..738078c130 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/StartExplorersJob.java
@@ -17,6 +17,7 @@ import net.i2p.router.JobImpl;
 import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
 import net.i2p.util.Log;
+import net.i2p.util.SystemVersion;
 
 /**
  * Fire off search jobs for random keys from the explore pool, up to MAX_PER_RUN
@@ -48,6 +49,9 @@ class StartExplorersJob extends JobImpl {
     private static final int LOW_ROUTERS = 2 * MIN_ROUTERS;
     /** explore slowly if we have more than this many routers */
     private static final int MAX_ROUTERS = 2 * LOW_ROUTERS;
+    // must be lower than LIMIT_ROUTERS in HandleFloodfillDatabaseStoreMessageJob
+    // because exploration does not register a reply job
+    private static final int LIMIT_ROUTERS = SystemVersion.isSlow() ? 800 : 3000;
     private static final int MIN_FFS = 50;
     static final int LOW_FFS = 2 * MIN_FFS;
 
@@ -63,13 +67,13 @@ class StartExplorersJob extends JobImpl {
     public String getName() { return "Start Explorers Job"; }
 
     public void runJob() {
+        int count = _facade.getDataStore().size();
         if (! (_facade.floodfillEnabled() ||
+               count > LIMIT_ROUTERS ||
                getContext().jobQueue().getMaxLag() > MAX_LAG ||
                getContext().throttle().getMessageDelay() > MAX_MSG_DELAY ||
-               // message delay limit also?
                getContext().router().gracefulShutdownInProgress())) {
             int num = MAX_PER_RUN;
-            int count = _facade.getDataStore().size();
             if (count < MIN_ROUTERS)
                 num *= 15;  // at less than 3x MIN_RESEED, explore extremely aggressively
             else if (count < LOW_ROUTERS)
-- 
GitLab