Author: toad
Date: 2005-11-18 01:25:44 +0000 (Fri, 18 Nov 2005)
New Revision: 7554
Modified:
trunk/freenet/src/freenet/node/InsertSender.java
trunk/freenet/src/freenet/node/PeerManager.java
trunk/freenet/src/freenet/node/PeerNode.java
trunk/freenet/src/freenet/node/Version.java
Log:
190:
More bugs in the load balancing code.
Modified: trunk/freenet/src/freenet/node/InsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertSender.java 2005-11-18 01:11:36 UTC
(rev 7553)
+++ trunk/freenet/src/freenet/node/InsertSender.java 2005-11-18 01:25:44 UTC
(rev 7554)
@@ -316,10 +316,10 @@
if(status == REJECTED_OVERLOAD) {
node.getInsertThrottle().requestRejectedOverload();
- next.rejectedOverload();
+ next.insertRejectedOverload();
} else if(status == SUCCESS || status == ROUTE_NOT_FOUND) {
node.getInsertThrottle().requestCompleted(System.currentTimeMillis() -
startTime);
- next.didNotRejectOverload();
+ next.insertDidNotRejectOverload();
}
synchronized(this) {
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2005-11-18 01:11:36 UTC
(rev 7553)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2005-11-18 01:25:44 UTC
(rev 7554)
@@ -268,7 +268,7 @@
double pSummaryFailure = p.getPRejectedOverload();
double denom = 1.0 - pSummaryFailure;
if(denom == 0.0) denom = 0.000001;
- return d / denom;
+ return d * denom;
}
/**
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2005-11-18 01:11:36 UTC
(rev 7553)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2005-11-18 01:25:44 UTC
(rev 7554)
@@ -156,6 +156,11 @@
*/
private final RunningAverage pRejectOverload;
+ /** The probability of the node rejecting an insert because of
+ * overload, timing out, etc.
+ */
+ private final RunningAverage pInsertRejectOverload;
+
/**
* Create a PeerNode from a SimpleFieldSet containing a
* node reference for one. This must contain the following
@@ -249,6 +254,7 @@
// FIXME maybe a simple binary RA would be better?
pRejectOverload = new SimpleRunningAverage(100, 0.05);
+ pInsertRejectOverload = new SimpleRunningAverage(100, 0.05);
}
private void randomizeMaxTimeBetweenPacketSends() {
@@ -839,7 +845,7 @@
public String getStatus() {
return
- (isConnected ? "CONNECTED " : "DISCONNECTED") + " " +
getPeer().toString()+" "+myName+" "+currentLocation.getValue()+" "+getVersion();
+ (isConnected ? "CONNECTED " : "DISCONNECTED") + " " +
getPeer().toString()+" "+myName+" "+currentLocation.getValue()+" "+getVersion()
+ " "+pRejectOverload.currentValue()+" ("+pRejectOverload.countReports()+") "+
pInsertRejectOverload.currentValue()+"
("+pInsertRejectOverload.countReports()+")";
}
public String getVersion(){
@@ -935,6 +941,10 @@
pRejectOverload.report(1.0);
}
+ public void insertRejectedOverload() {
+ pInsertRejectOverload.report(1.0);
+ }
+
/**
* Record the fact that the node did not reject a request
* due to overload.
@@ -943,7 +953,15 @@
pRejectOverload.report(0.0);
}
+ public void insertDidNotRejectOverload() {
+ pInsertRejectOverload.report(0.0);
+ }
+
public double getPRejectedOverload() {
return pRejectOverload.currentValue();
}
+
+ public double getPInsertRejectedOverload() {
+ return pInsertRejectOverload.currentValue();
+ }
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-18 01:11:36 UTC (rev
7553)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-18 01:25:44 UTC (rev
7554)
@@ -20,10 +20,10 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 189;
+ public static final int buildNumber = 190;
/** Oldest build of Fred we will talk to */
- public static final int lastGoodBuild = 189;
+ public static final int lastGoodBuild = 190;
/** The highest reported build of fred */
public static int highestSeenBuild = buildNumber;