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