Author: toad
Date: 2008-02-23 00:05:00 +0000 (Sat, 23 Feb 2008)
New Revision: 18119
Modified:
trunk/freenet/src/freenet/node/CHKInsertSender.java
trunk/freenet/src/freenet/node/RequestSender.java
Log:
Backoff a node if we get a transfer failure.
Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2008-02-22 23:28:02 UTC
(rev 18118)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2008-02-23 00:05:00 UTC
(rev 18119)
@@ -90,6 +90,10 @@
completedTransfer = true;
notifyAll();
}
+ if(success)
+ pn.successNotOverload();
+ else
+
pn.localRejectedOverload("TransferFailedInsert");
synchronized(backgroundTransfers) {
backgroundTransfers.notifyAll();
}
@@ -549,7 +553,6 @@
return;
} else {
// Our task is complete, one node
(quite deep), has accepted the insert.
- next.successNotOverload();
// The request will not be routed to
any other nodes, this is where the data *should* be.
finish(SUCCESS, next);
return;
Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java 2008-02-22 23:28:02 UTC
(rev 18118)
+++ trunk/freenet/src/freenet/node/RequestSender.java 2008-02-23 00:05:00 UTC
(rev 18119)
@@ -667,7 +667,6 @@
}
// Found data
- next.successNotOverload();
// First get headers
@@ -691,6 +690,7 @@
try {
if(logMINOR) Logger.minor(this,
"Receiving data");
byte[] data = br.receive();
+ next.successNotOverload();
if(logMINOR) Logger.minor(this,
"Received data");
// Received data
try {
@@ -708,6 +708,7 @@
Logger.normal(this, "Transfer failed (disconnect): "+e, e);
else
Logger.error(this, "Transfer failed
("+e.getReason()+"/"+RetrievalException.getErrString(e.getReason())+"): "+e, e);
+
next.localRejectedOverload("TransferFailedRequest"+e.getReason());
finish(TRANSFER_FAILED, next, false);
node.failureTable.onFinalFailure(key,
next, htl, FailureTable.REJECT_TIME, source);
return;