Author: toad
Date: 2009-01-16 13:43:40 +0000 (Fri, 16 Jan 2009)
New Revision: 25076

Modified:
   trunk/freenet/src/freenet/node/CHKInsertHandler.java
   trunk/freenet/src/freenet/node/NodeStats.java
   trunk/freenet/src/freenet/node/RequestSender.java
Log:
Stats: Show proportion of request transfers that timeout or go to turtle mode.
Block receive stats: Include request transfers (not just inserts and 
get-offered-key).


Modified: trunk/freenet/src/freenet/node/CHKInsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertHandler.java        2009-01-16 
00:06:27 UTC (rev 25075)
+++ trunk/freenet/src/freenet/node/CHKInsertHandler.java        2009-01-16 
13:43:40 UTC (rev 25076)
@@ -438,7 +438,7 @@
                                else
                                        // Annoying, but we have stats for 
this; no need to call attention to it, it's unlikely to be a bug.
                                        Logger.normal(this, "Failed to retrieve 
("+e.getReason()+"/"+RetrievalException.getErrString(e.getReason())+"): "+e, e);
-               node.nodeStats.failedBlockReceive();
+               node.nodeStats.failedBlockReceive(false, false, false);
                 return;
             } catch (Throwable t) {
                 Logger.error(this, "Caught "+t, t);

Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java       2009-01-16 00:06:27 UTC 
(rev 25075)
+++ trunk/freenet/src/freenet/node/NodeStats.java       2009-01-16 13:43:40 UTC 
(rev 25076)
@@ -132,6 +132,8 @@
        final TrivialRunningAverage localFetchPSuccess;
        final TrivialRunningAverage remoteFetchPSuccess;
        final TrivialRunningAverage blockTransferPSuccess;
+       final TrivialRunningAverage blockTransferFailTurtled;
+       final TrivialRunningAverage blockTransferFailTimeout;
        
        final TrivialRunningAverage successfulLocalCHKFetchTimeAverage;
        final TrivialRunningAverage unsuccessfulLocalCHKFetchTimeAverage;
@@ -345,6 +347,8 @@
                localFetchPSuccess = new TrivialRunningAverage();
                remoteFetchPSuccess = new TrivialRunningAverage();
                blockTransferPSuccess = new TrivialRunningAverage();
+               blockTransferFailTurtled = new TrivialRunningAverage();
+               blockTransferFailTimeout = new TrivialRunningAverage();
                
                successfulLocalCHKFetchTimeAverage = new 
TrivialRunningAverage();
                unsuccessfulLocalCHKFetchTimeAverage = new 
TrivialRunningAverage();
@@ -1288,7 +1292,9 @@
                                sskFetchPSuccess,
                                localFetchPSuccess,
                                remoteFetchPSuccess,
-                               blockTransferPSuccess
+                               blockTransferPSuccess,
+                               blockTransferFailTurtled,
+                               blockTransferFailTimeout
                };
                final String[] names = new String[] {
                                // FIXME l10n, but atm this only shows up in 
advanced mode
@@ -1297,7 +1303,9 @@
                                "SSKs",
                                "Local requests",
                                "Remote requests",
-                               "Block transfers"
+                               "Block transfers",
+                               "Transfers turtled",
+                               "Transfers timed out"
                };
                HTMLNode row = list.addChild("tr");
                row.addChild("th", "Group"); 
@@ -1856,7 +1864,11 @@
                if(logMINOR) Logger.minor(this, "Successful receives: 
"+blockTransferPSuccess.currentValue()+" 
count="+blockTransferPSuccess.countReports());
        }
 
-       public synchronized void failedBlockReceive() {
+       public synchronized void failedBlockReceive(boolean normalFetch, 
boolean timeout, boolean turtle) {
+               if(normalFetch) {
+                       blockTransferFailTurtled.report(turtle ? 1.0 : 0.0);
+                       blockTransferFailTimeout.report(turtle ? 1.0 : 0.0);
+               }
                blockTransferPSuccess.report(0.0);
                if(logMINOR) Logger.minor(this, "Successful receives: 
"+blockTransferPSuccess.currentValue()+" 
count="+blockTransferPSuccess.countReports());
        }

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java   2009-01-16 00:06:27 UTC 
(rev 25075)
+++ trunk/freenet/src/freenet/node/RequestSender.java   2009-01-16 13:43:40 UTC 
(rev 25076)
@@ -301,7 +301,7 @@
                                        if(!br.tookTooLong())
                                                
pn.transferFailed("RequestSenderGetOfferedTransferFailed");
                                offers.deleteLastOffer();
-                                       node.nodeStats.failedBlockReceive();
+                                       
node.nodeStats.failedBlockReceive(false, false, false);
                                        return;
                                }
                        } finally {
@@ -825,6 +825,7 @@
                                        next.unregisterTurtleTransfer(this);
                                        node.unregisterTurtleTransfer(this);
                                }
+                               node.nodeStats.successfulBlockReceive();
                                        if(logMINOR) Logger.minor(this, 
"Received data");
                                        // Received data
                                        try {
@@ -856,11 +857,12 @@
                                                        
next.localRejectedOverload("TransferFailedRequest"+e.getReason());
                                        finish(TRANSFER_FAILED, next, false);
                                        node.failureTable.onFinalFailure(key, 
next, htl, FailureTable.REJECT_TIME, source);
+                                       int reason = e.getReason();
+                                       boolean timeout = (!br.senderAborted()) 
&&
+                                                       reason == 
RetrievalException.SENDER_DIED || reason == RetrievalException.RECEIVER_DIED || 
reason == RetrievalException.TIMED_OUT
+                                                       || reason == 
RetrievalException.UNABLE_TO_SEND_BLOCK_WITHIN_TIMEOUT;
                                        if(!turtleMode) {
-                                               int reason = e.getReason();
-                                               if((!br.senderAborted()) &&
-                                                               reason == 
RetrievalException.SENDER_DIED || reason == RetrievalException.RECEIVER_DIED || 
reason == RetrievalException.TIMED_OUT
-                                                               || reason == 
RetrievalException.UNABLE_TO_SEND_BLOCK_WITHIN_TIMEOUT) {
+                                               if(timeout) {
                                                        // Looks like a 
timeout. Backoff.
                                                        
next.transferFailed(e.getMessage());
                                                } else {
@@ -868,7 +870,7 @@
                                                        // Treat as a DNF.
                                                        
node.failureTable.onFinalFailure(key, next, htl, FailureTable.REJECT_TIME, 
source);
                                                }
-                                                       
+                                       node.nodeStats.failedBlockReceive(true, 
timeout, reason == RetrievalException.GONE_TO_TURTLE_MODE);
                                        }
                                        return;
                                }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to