Author: zothar
Date: 2006-06-18 19:02:33 +0000 (Sun, 18 Jun 2006)
New Revision: 9304

Modified:
   trunk/freenet/src/freenet/node/RequestSender.java
Log:
Mitigate "backoff hell" a bit by not routing to a peer if it's the only one not 
backed off and we have a few backed off peers.

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java   2006-06-18 17:35:22 UTC 
(rev 9303)
+++ trunk/freenet/src/freenet/node/RequestSender.java   2006-06-18 19:02:33 UTC 
(rev 9304)
@@ -113,6 +113,13 @@
                 return;
             }

+                       // Route starvation due to almost all backed off?
+                       
if(node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_CONNECTED) == 1 && 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF) > 3) {
+                // Don't send everything to one node, that may have just come 
out of backoff, hopefully preventing backoff hell (the one emerging from 
backoff gets pounded back into backoff)
+                finish(ROUTE_NOT_FOUND, null);
+                return;
+                       }
+
             // Route it
             PeerNode next;
             double nextValue;


Reply via email to