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;
>>
>>     


Reply via email to