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, zothar at freenetproject.org 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;
>>
>>