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;