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);
                }


Reply via email to