Author: toad
Date: 2007-04-13 20:08:08 +0000 (Fri, 13 Apr 2007)
New Revision: 12655
Modified:
trunk/freenet/src/freenet/node/InsertHandler.java
trunk/freenet/src/freenet/node/NodeClientCore.java
trunk/freenet/src/freenet/node/NodeStats.java
trunk/freenet/src/freenet/node/RequestHandler.java
trunk/freenet/src/freenet/node/SSKInsertHandler.java
Log:
Fix inaccuracy in stats used for rejection (bandwidth liability i.e. worst case
bytes for each request) calculations:
- Local requests should not report sent bytes because they haven't sent any
bytes to the previous node.
- Local inserts should not report received bytes because they haven't received
any bytes from the previous node.
Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java 2007-04-13 19:27:45 UTC
(rev 12654)
+++ trunk/freenet/src/freenet/node/InsertHandler.java 2007-04-13 20:08:08 UTC
(rev 12655)
@@ -341,6 +341,7 @@
node.nodeStats.remoteChkInsertBytesSentAverage.report(totalSent);
node.nodeStats.remoteChkInsertBytesReceivedAverage.report(totalReceived);
if(code == CHKInsertSender.SUCCESS) {
+ // Report both sent and received because we have both a
Handler and a Sender
node.nodeStats.successfulChkInsertBytesSentAverage.report(totalSent);
node.nodeStats.successfulChkInsertBytesReceivedAverage.report(totalSent);
}
Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java 2007-04-13 19:27:45 UTC
(rev 12654)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java 2007-04-13 20:08:08 UTC
(rev 12655)
@@ -484,7 +484,8 @@
nodeStats.localChkFetchBytesSentAverage.report(rs.getTotalSentBytes());
nodeStats.localChkFetchBytesReceivedAverage.report(rs.getTotalReceivedBytes());
if(status == RequestSender.SUCCESS) {
-
nodeStats.successfulChkFetchBytesSentAverage.report(rs.getTotalSentBytes());
+ // See comments above declaration of successful* : We
don't report sent bytes here.
+
//nodeStats.successfulChkFetchBytesSentAverage.report(rs.getTotalSentBytes());
nodeStats.successfulChkFetchBytesReceivedAverage.report(rs.getTotalReceivedBytes());
}
}
@@ -591,7 +592,9 @@
nodeStats.localSskFetchBytesSentAverage.report(rs.getTotalSentBytes());
nodeStats.localSskFetchBytesReceivedAverage.report(rs.getTotalReceivedBytes());
if(status == RequestSender.SUCCESS) {
-
nodeStats.successfulSskFetchBytesSentAverage.report(rs.getTotalSentBytes());
+ // See comments above
successfulSskFetchBytesSentAverage : we don't relay the data, so
+ // reporting the sent bytes would be inaccurate.
+
//nodeStats.successfulSskFetchBytesSentAverage.report(rs.getTotalSentBytes());
nodeStats.successfulSskFetchBytesReceivedAverage.report(rs.getTotalReceivedBytes());
}
}
@@ -742,8 +745,9 @@
nodeStats.localChkInsertBytesSentAverage.report(sent);
nodeStats.localChkInsertBytesReceivedAverage.report(received);
if(status == CHKInsertSender.SUCCESS) {
+ // Only report Sent bytes because we did not receive
the data.
nodeStats.successfulChkInsertBytesSentAverage.report(sent);
-
nodeStats.successfulChkInsertBytesReceivedAverage.report(received);
+
//nodeStats.successfulChkInsertBytesReceivedAverage.report(received);
}
}
@@ -857,8 +861,9 @@
nodeStats.localSskInsertBytesSentAverage.report(sent);
nodeStats.localSskInsertBytesReceivedAverage.report(received);
if(status == SSKInsertSender.SUCCESS) {
+ // Only report Sent bytes as we haven't received
anything.
nodeStats.successfulSskInsertBytesSentAverage.report(sent);
-
nodeStats.successfulSskInsertBytesReceivedAverage.report(received);
+
//nodeStats.successfulSskInsertBytesReceivedAverage.report(received);
}
}
Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java 2007-04-13 19:27:45 UTC
(rev 12654)
+++ trunk/freenet/src/freenet/node/NodeStats.java 2007-04-13 20:08:08 UTC
(rev 12655)
@@ -95,7 +95,17 @@
final TimeDecayingRunningAverage localChkInsertBytesReceivedAverage;
final TimeDecayingRunningAverage localSskInsertBytesReceivedAverage;
- // Bytes used by successful chk/ssk request/insert
+ // Bytes used by successful chk/ssk request/insert.
+ // Note: These are used to determine whether to accept a request,
+ // hence they should be roughly representative of incoming - NOT LOCAL -
+ // requests. Therefore, while we DO report local successful requests,
+ // we only report the portion which will be consistent with a remote
+ // request. If there is both a Handler and a Sender, it's a remote
+ // request, report both. If there is only a Sender, report only the
+ // received bytes (for a request). Etc.
+
+ // Note that these are always reported in the Handler or the
NodeClientCore
+ // call taking its place.
final TimeDecayingRunningAverage successfulChkFetchBytesSentAverage;
final TimeDecayingRunningAverage successfulSskFetchBytesSentAverage;
final TimeDecayingRunningAverage successfulChkInsertBytesSentAverage;
Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java 2007-04-13 19:27:45 UTC
(rev 12654)
+++ trunk/freenet/src/freenet/node/RequestHandler.java 2007-04-13 20:08:08 UTC
(rev 12655)
@@ -203,6 +203,7 @@
node.nodeStats.remoteSskFetchBytesSentAverage.report(sent);
node.nodeStats.remoteSskFetchBytesReceivedAverage.report(rcvd);
if(status == RequestSender.SUCCESS) {
+ // Can report both parts, because we had both a
Handler and a Sender
node.nodeStats.successfulSskFetchBytesSentAverage.report(sent);
node.nodeStats.successfulSskFetchBytesReceivedAverage.report(sent);
}
@@ -211,6 +212,7 @@
node.nodeStats.remoteChkFetchBytesSentAverage.report(sent);
node.nodeStats.remoteChkFetchBytesReceivedAverage.report(rcvd);
if(status == RequestSender.SUCCESS) {
+ // Can report both parts, because we had both a
Handler and a Sender
node.nodeStats.successfulChkFetchBytesSentAverage.report(sent);
node.nodeStats.successfulChkFetchBytesReceivedAverage.report(sent);
}
Modified: trunk/freenet/src/freenet/node/SSKInsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertHandler.java 2007-04-13
19:27:45 UTC (rev 12654)
+++ trunk/freenet/src/freenet/node/SSKInsertHandler.java 2007-04-13
20:08:08 UTC (rev 12655)
@@ -315,6 +315,7 @@
node.nodeStats.remoteSskInsertBytesSentAverage.report(totalSent);
node.nodeStats.remoteSskInsertBytesReceivedAverage.report(totalReceived);
if(code == SSKInsertSender.SUCCESS) {
+ // Can report both sides
node.nodeStats.successfulSskInsertBytesSentAverage.report(totalSent);
node.nodeStats.successfulSskInsertBytesReceivedAverage.report(totalReceived);
}