Author: toad
Date: 2007-04-13 14:19:49 +0000 (Fri, 13 Apr 2007)
New Revision: 12627

Modified:
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/ThrottleWindowManager.java
Log:
Count non-backed-off peers when calculating alchemical multiplier for load 
limiting.
Do not count backed off peers, even if all peers are backed off. While we may 
still route to them, we do not in such a case want to increase input load!
max(1, ... ) will ensure we send *some* requests.

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2007-04-13 14:09:16 UTC 
(rev 12626)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2007-04-13 14:19:49 UTC 
(rev 12627)
@@ -759,20 +759,17 @@
                node.clientCore.alerts.register(ua);
        }

-       public int countRoutablePeers() {
+       public int countNonBackedOffPeers() {
                PeerNode[] peers;
                synchronized(this) {
                        peers = connectedPeers; // even if myPeers peers are 
connected they won't be routed to
                }
-               int count = 0;
                int countNoBackoff = 0;
                for(int i=0;i<peers.length;i++) {
                        if(peers[i].isRoutable()) {
-                               count++;
                                if(!peers[i].isRoutingBackedOff()) 
countNoBackoff++;
                        }
                }
-               if(countNoBackoff == 0) return count;
                return countNoBackoff;
        }


Modified: trunk/freenet/src/freenet/node/ThrottleWindowManager.java
===================================================================
--- trunk/freenet/src/freenet/node/ThrottleWindowManager.java   2007-04-13 
14:09:16 UTC (rev 12626)
+++ trunk/freenet/src/freenet/node/ThrottleWindowManager.java   2007-04-13 
14:19:49 UTC (rev 12627)
@@ -31,7 +31,7 @@
                if (_simulatedWindowSize < 1.0) {
                        _simulatedWindowSize = 1.0F;
                }
-               return _simulatedWindowSize * Math.max(1, 
node.peers.countRoutablePeers());
+               return _simulatedWindowSize * Math.max(1, 
node.peers.countNonBackedOffPeers());
        }

        public synchronized void rejectedOverload() {


Reply via email to