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;


Reply via email to