Perhaps I'm just not awake yet, but it seems to me that 
"lastCheckedUncontended = now;" needs to be inside the if block.

toad at freenetproject.org wrote:
> Author: toad
> Date: 2006-07-20 00:00:43 +0000 (Thu, 20 Jul 2006)
> New Revision: 9668
>
> Modified:
>    trunk/freenet/src/freenet/node/Node.java
> Log:
> more synchronization
>
> Modified: trunk/freenet/src/freenet/node/Node.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/Node.java  2006-07-19 23:47:29 UTC (rev 
> 9667)
> +++ trunk/freenet/src/freenet/node/Node.java  2006-07-20 00:00:43 UTC (rev 
> 9668)
> @@ -2360,21 +2360,30 @@
>               
>               // If no recent reports, no packets have been sent; correct the 
> average downwards.
>               long now = System.currentTimeMillis();
> -             if(throttledPacketSendAverage.lastReportTime() < now - 5000) {  
> // if last report more than 5 seconds ago
> +             boolean checkUncontended = false;
> +             synchronized(this) {
> +                     if(now - lastCheckedUncontended > 1000) {
> +                             checkUncontended = true;
> +                     }
> +                     lastCheckedUncontended = now;
> +             }
> +             if(checkUncontended && 
> throttledPacketSendAverage.lastReportTime() < now - 5000) {  // if last 
> report more than 5 seconds ago
> +                     // shouldn't take long
>                       
> outputThrottle.blockingGrab(ESTIMATED_SIZE_OF_ONE_THROTTLED_PACKET);
>                       
> outputThrottle.recycle(ESTIMATED_SIZE_OF_ONE_THROTTLED_PACKET);
>                       long after = System.currentTimeMillis();
>                       // Report time it takes to grab the bytes.
>                       throttledPacketSendAverage.report(after - now);
>                       now = after;
> +                     // will have changed, use new value
>                       synchronized(this) {
>                               bwlimitDelayTime = 
> throttledPacketSendAverage.currentValue();
>                       }
>               }
>               
> -             // Round trip time
>               double pingTime = nodePinger.averagePingTime();
>               synchronized(this) {
> +                     // Round trip time
>                       if(pingTime > MAX_PING_TIME) {
>                               if((now - lastAcceptedRequest > 
> MAX_INTERREQUEST_TIME) && canAcceptAnyway) {
>                                       Logger.minor(this, "Accepting request 
> anyway (take one every 10 secs to keep bwlimitDelayTime updated)");
> @@ -2389,10 +2398,8 @@
>                                       return ">SUB_MAX_PING_TIME";
>                               }
>                       }
> -             }
>               
> -             // Bandwidth limited packets
> -             synchronized(this) {
> +                     // Bandwidth limited packets
>                       Logger.minor(this, "bwlimitDelayTime = 
> "+bwlimitDelayTime);
>                       if(bwlimitDelayTime > MAX_THROTTLE_DELAY) {
>                               if((now - lastAcceptedRequest > 
> MAX_INTERREQUEST_TIME) && canAcceptAnyway) {
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>   


Reply via email to