Author: toad
Date: 2006-12-23 00:39:22 +0000 (Sat, 23 Dec 2006)
New Revision: 11515
Modified:
trunk/freenet/src/freenet/node/PeerManager.java
trunk/freenet/src/freenet/node/RequestStarterGroup.java
trunk/freenet/src/freenet/node/ThrottleWindowManager.java
trunk/freenet/src/freenet/node/Version.java
Log:
1009: Load limiting experiment (multiply window by number of peers). Mandatory
on 31 december.
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2006-12-22 22:01:55 UTC
(rev 11514)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2006-12-23 00:39:22 UTC
(rev 11515)
@@ -721,4 +721,21 @@
public void start() {
node.clientCore.alerts.register(ua);
}
+
+ public int countRoutablePeers() {
+ 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/RequestStarterGroup.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestStarterGroup.java 2006-12-22
22:01:55 UTC (rev 11514)
+++ trunk/freenet/src/freenet/node/RequestStarterGroup.java 2006-12-23
00:39:22 UTC (rev 11515)
@@ -32,7 +32,7 @@
RequestStarterGroup(Node node, NodeClientCore core, int portNumber,
RandomSource random, Config config, SimpleFieldSet fs) {
SubConfig schedulerConfig = new SubConfig("node.scheduler",
config);
- throttleWindow = new ThrottleWindowManager(2.0, fs == null ?
null : fs.subset("ThrottleWindow"));
+ throttleWindow = new ThrottleWindowManager(2.0, fs == null ?
null : fs.subset("ThrottleWindow"), node);
chkRequestThrottle = new MyRequestThrottle(throttleWindow,
5000, "CHK Request", fs == null ? null : fs.subset("CHKRequestThrottle"),
32768);
chkRequestStarter = new RequestStarter(core,
chkRequestThrottle, "CHK Request starter ("+portNumber+ ')',
node.requestOutputThrottle, node.requestInputThrottle,
node.localChkFetchBytesSentAverage, node.localChkFetchBytesReceivedAverage,
false);
chkFetchScheduler = new ClientRequestScheduler(false, false,
random, chkRequestStarter, node, schedulerConfig, "CHKrequester");
Modified: trunk/freenet/src/freenet/node/ThrottleWindowManager.java
===================================================================
--- trunk/freenet/src/freenet/node/ThrottleWindowManager.java 2006-12-22
22:01:55 UTC (rev 11514)
+++ trunk/freenet/src/freenet/node/ThrottleWindowManager.java 2006-12-23
00:39:22 UTC (rev 11515)
@@ -14,7 +14,10 @@
private long _totalPackets = 0, _droppedPackets = 0;
private double _simulatedWindowSize = 2;
- public ThrottleWindowManager(double def, SimpleFieldSet fs) {
+ private final Node node;
+
+ public ThrottleWindowManager(double def, SimpleFieldSet fs, Node node) {
+ this.node = node;
if(fs != null) {
_totalPackets = fs.getInt("TotalPackets", 0);
_droppedPackets = fs.getInt("DroppedPackets", 0);
@@ -28,7 +31,7 @@
if (_simulatedWindowSize < 1.0) {
_simulatedWindowSize = 1.0F;
}
- return _simulatedWindowSize;
+ return _simulatedWindowSize * Math.max(1,
node.peers.countRoutablePeers());
}
public synchronized void rejectedOverload() {
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-12-22 22:01:55 UTC (rev
11514)
+++ trunk/freenet/src/freenet/node/Version.java 2006-12-23 00:39:22 UTC (rev
11515)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1008;
+ private static final int buildNumber = 1009;
/** Oldest build of Fred we will talk to */
- private static final int oldLastGoodBuild = 1002;
- private static final int newLastGoodBuild = 1007;
+ private static final int oldLastGoodBuild = 1007;
+ private static final int newLastGoodBuild = 1009;
private static final long transitionTime;
static {
final Calendar _cal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// year, month - 1 (or constant), day, hour, minute, second
- _cal.set( 2006, Calendar.DECEMBER, 25, 0, 0, 0 );
+ _cal.set( 2006, Calendar.DECEMBER, 31, 0, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}