Matthew Toseland wrote:
Not the right place, and not the right solution. Will be reverted.
Well, in theory, that code would only do something when "backoff hell" was likely and it's very frustrating to find a node stuck in "backoff hell" that won't recover without intervention and you wonder how long it's been that way (assuming you're not logging at MINOR and getting the once-per-second peer status summary).
On Sun, Jun 18, 2006 at 07:02:38PM +0000, [EMAIL PROTECTED] wrote:
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;


_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to