Author: toad
Date: 2005-12-03 18:54:18 +0000 (Sat, 03 Dec 2005)
New Revision: 7656
Modified:
trunk/freenet/src/freenet/client/FileInserter.java
trunk/freenet/src/freenet/node/InsertHandler.java
trunk/freenet/src/freenet/node/InsertSender.java
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/PeerManager.java
trunk/freenet/src/freenet/node/PeerNode.java
trunk/freenet/src/freenet/node/Version.java
Log:
266:
Minor-ish changes.
Modified: trunk/freenet/src/freenet/client/FileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/FileInserter.java 2005-12-03 18:38:37 UTC
(rev 7655)
+++ trunk/freenet/src/freenet/client/FileInserter.java 2005-12-03 18:54:18 UTC
(rev 7656)
@@ -2,6 +2,7 @@
import java.io.IOException;
+import freenet.client.events.BlockInsertErrorEvent;
import freenet.client.events.SimpleBlockPutEvent;
import freenet.keys.CHKEncodeException;
import freenet.keys.ClientCHKBlock;
@@ -121,8 +122,9 @@
int rnfs = 0;
for(int i=0;i<=ctx.maxInsertRetries;i++) {
try {
- ctx.eventProducer.produceEvent(new
SimpleBlockPutEvent(chk.getClientKey()));
if(!getCHKOnly)
+ ctx.eventProducer.produceEvent(new
SimpleBlockPutEvent(chk.getClientKey()));
+ if(!getCHKOnly)
ctx.client.putCHK(chk,
ctx.starterClient, ctx.cacheLocalRequests);
break;
} catch (LowLevelPutException e) {
Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java 2005-12-03 18:38:37 UTC
(rev 7655)
+++ trunk/freenet/src/freenet/node/InsertHandler.java 2005-12-03 18:54:18 UTC
(rev 7656)
@@ -39,6 +39,7 @@
private byte[] headers;
private BlockReceiver br;
private Thread runThread;
+ private boolean sentSuccess;
PartiallyReceivedBlock prb;
@@ -168,6 +169,15 @@
continue;
}
+// // FIXME obviously! For debugging load issues.
+// if(node.myName.equalsIgnoreCase("Toad #1") &&
+// node.random.nextBoolean()) {
+// // Maliciously timeout
+// Logger.error(this, "Maliciously timing out: was
"+sender.getStatusString());
+// sentSuccess = true;
+// return;
+// }
+
// Local RejectedOverload's (fatal).
// Internal error counts as overload. It'd only create a timeout
otherwise, which is the same thing anyway.
// We *really* need a good way to deal with nodes that constantly
R_O!
@@ -193,6 +203,7 @@
if(status == InsertSender.SUCCESS) {
msg = DMT.createFNPInsertReply(uid);
+ sentSuccess = true;
source.send(msg);
canCommit = true;
finish();
@@ -242,15 +253,16 @@
// :(
Logger.minor(this, "Lost connection in "+this+" when sending
FNPDataInsertRejected");
}
- } else if(sender.getStatus() == InsertSender.SUCCESS) {
+ } else if(sender != null && sender.getStatus() == InsertSender.SUCCESS
&& !sentSuccess) {
+ sentSuccess = true;
// Succeeded! Yay!
- Message msg = DMT.createFNPInsertReply(uid);
- try {
- source.send(msg);
- } catch (NotConnectedException e) {
- // Ugh
- Logger.normal(this, "Finished InsertHandler but can't tell
original node!: "+e);
- }
+ Message msg = DMT.createFNPInsertReply(uid);
+ try {
+ source.send(msg);
+ } catch (NotConnectedException e) {
+ // Ugh
+ Logger.normal(this, "Finished InsertHandler but can't
tell original node!: "+e);
+ }
}
}
Modified: trunk/freenet/src/freenet/node/InsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertSender.java 2005-12-03 18:38:37 UTC
(rev 7655)
+++ trunk/freenet/src/freenet/node/InsertSender.java 2005-12-03 18:54:18 UTC
(rev 7656)
@@ -186,8 +186,7 @@
// Non-fatal - probably still have time
left
if (msg.getBoolean(DMT.IS_LOCAL)) {
next.localRejectedOverload();
- Logger
- .minor(this,
+ Logger.minor(this,
"Local RejectedOverload, moving on to next peer");
// Give up on this one, try
another
break;
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2005-12-03 18:38:37 UTC (rev
7655)
+++ trunk/freenet/src/freenet/node/Node.java 2005-12-03 18:54:18 UTC (rev
7656)
@@ -22,6 +22,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
+import java.util.Iterator;
import freenet.client.ArchiveManager;
import freenet.client.HighLevelSimpleClient;
@@ -852,7 +853,28 @@
* @return Some status information.
*/
public String getStatus() {
- return peers.getStatus()+"\nInserts:
"+insertSenders.size()+"\nRequests: "+requestSenders.size()+"\nTransferring
requests: "+this.transferringRequestSenders.size();
+ StringBuffer sb = new StringBuffer();
+ sb.append(peers.getStatus());
+ sb.append("\nInserts: ");
+ int x = insertSenders.size();
+ sb.append(x);
+ if(x < 5 && x > 0) {
+ sb.append('\n');
+ // Dump
+ Iterator i = insertSenders.values().iterator();
+ while(i.hasNext()) {
+ InsertSender s = (InsertSender) i.next();
+ sb.append(s.uid);
+ sb.append(": ");
+ sb.append(s.getStatusString());
+ sb.append('\n');
+ }
+ }
+ sb.append("\nRequests: ");
+ sb.append(requestSenders.size());
+ sb.append("\nTransferring requests: ");
+ sb.append(this.transferringRequestSenders.size());
+ return sb.toString();
}
/**
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2005-12-03 18:38:37 UTC
(rev 7655)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2005-12-03 18:54:18 UTC
(rev 7656)
@@ -308,9 +308,10 @@
if(routedTo.contains(p)) continue;
if(p == pn) continue;
if(!p.isConnected()) continue;
- if(p.isBackedOff()) continue;
+ // Don't backoff our only peer
count++;
any = p;
+ if(p.isBackedOff()) continue;
double diff = distance(p, loc);
Logger.minor(this, "p.loc="+p.getLocation().getValue()+",
loc="+loc+", d="+distance(p.getLocation().getValue(), loc)+" usedD="+diff);
if((!ignoreSelf) && diff > maxDiff) continue;
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2005-12-03 18:38:37 UTC
(rev 7655)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2005-12-03 18:54:18 UTC
(rev 7656)
@@ -952,6 +952,7 @@
* Back off this node for a while.
*/
public void localRejectedOverload() {
+ Logger.minor(this, "Local rejected overload on "+this);
synchronized(backoffSync) {
long now = System.currentTimeMillis();
// Don't back off any further if we are already backed
off
@@ -959,7 +960,11 @@
backoffLength = backoffLength *
BACKOFF_MULTIPLIER;
if(backoffLength > MAX_BACKOFF_LENGTH)
backoffLength = MAX_BACKOFF_LENGTH;
- backedOffUntil = now +
node.random.nextInt(backoffLength);
+ int x = node.random.nextInt(backoffLength);
+ backedOffUntil = now + x;
+ Logger.minor(this, "Backing off:
backoffLength="+backoffLength+", until "+x+"ms on "+getPeer());
+ } else {
+ Logger.minor(this, "Ignoring
localRejectedOverload: "+(backedOffUntil-now)+"ms remaining on backoff on
"+getPeer());
}
}
}
@@ -969,10 +974,16 @@
* Reset backoff.
*/
public void successNotOverload() {
+ Logger.minor(this, "Success not overload on "+this);
synchronized(backoffSync) {
+ long now = System.currentTimeMillis();
// Don't un-backoff if still backed off
- if(System.currentTimeMillis() > backedOffUntil)
+ if(now > backedOffUntil) {
backoffLength = INITIAL_BACKOFF_LENGTH;
+ Logger.minor(this, "Resetting backoff on
"+getPeer());
+ } else {
+ Logger.minor(this, "Ignoring
successNotOverload: "+(backedOffUntil-now)+"ms remaining on backoff on
"+getPeer());
+ }
}
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-12-03 18:38:37 UTC (rev
7655)
+++ trunk/freenet/src/freenet/node/Version.java 2005-12-03 18:54:18 UTC (rev
7656)
@@ -20,10 +20,10 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 265;
+ public static final int buildNumber = 266;
/** Oldest build of Fred we will talk to */
- public static final int lastGoodBuild = 265;
+ public static final int lastGoodBuild = 266;
/** The highest reported build of fred */
public static int highestSeenBuild = buildNumber;