Update of /cvsroot/freenet/freenet/src/freenet/node/rt
In directory sc8-pr-cvs1:/tmp/cvs-serv13876/src/freenet/node/rt
Modified Files:
FilterRoutingTable.java NGRoutingTable.java RoutingTable.java
StandardNodeEstimator.java StoredRoutingTable.java
TreeRoutingTable.java
Log Message:
6266:
FORK UNSTABLE NETWORK. Protocol version increases to 1.47. The purpose of this: it is
likely that NGRouting and CPAlgoRT are not really compatible in their present
implementations. Hopefully we can get a decent sized test network together.
Minor changes:
Don't reference old nodes in the RT. Take them out if they are serialized in. Add a
means of checking whether it is old for purposes of routing to or for purposes of
accepting requests from it.
Try to keep the references on the RT up to date.
Detect Opera as well as IE.
Minor fix in TimeEstimator.drawGraphBMP()
Added diagnostic requestDataNotFound.
Fix load %.
Fix CHK for README in dist servlet.
Minor UI tweak to General infolet.
Minor graphical change (add a stretched graph per estimator) to per node pages linked
from Node Reference Status.
Index: FilterRoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/FilterRoutingTable.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -w -r1.7 -r1.8
--- FilterRoutingTable.java 30 Aug 2003 23:16:52 -0000 1.7
+++ FilterRoutingTable.java 22 Oct 2003 22:07:15 -0000 1.8
@@ -52,6 +52,10 @@
return rt.references(id);
}
+ public final void updateReference(NodeReference nr) {
+ rt.updateReference(nr);
+ }
+
public NodeReference getNodeReference(Identity id) {
return rt.getNodeReference(id);
}
Index: NGRoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/NGRoutingTable.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -w -r1.7 -r1.8
--- NGRoutingTable.java 17 Oct 2003 01:43:29 -0000 1.7
+++ NGRoutingTable.java 22 Oct 2003 22:07:15 -0000 1.8
@@ -9,6 +9,7 @@
import freenet.support.*;
import freenet.support.sort.*;
import freenet.support.Comparable;
+import freenet.Version;
import java.io.*;
import java.util.Enumeration;
import java.util.Random;
@@ -92,7 +93,14 @@
ne = (NodeEstimator) mem.getProperty(NGKEY);
} catch (DataObjectUnloadedException e) {
try {
- ne = factory.create(mem,
mem.getNodeReference(), e, false);
+ NodeReference ref = mem.getNodeReference();
+ if(!Version.checkGoodVersion(ref.getVersion(),
true)) {
+ Core.logger.log(this, "Rejecting
reference "+ref+
+ " -
too old in loadEstimators",
+
Logger.NORMAL);
+ continue;
+ }
+ ne = factory.create(mem, ref, e, false);
} catch (IOException ex) {
Core.logger.log(this, "Caught "+ex+"
deserializing a NodeEstimator for "+mem, Logger.ERROR);
ne = null;
@@ -107,10 +115,35 @@
}
}
+ public synchronized void updateReference(NodeReference nr) {
+ Identity i = nr.getIdentity();
+ RoutingMemory mem = routingStore.getNode(i);
+ if(mem != null) {
+ NodeEstimator e = (NodeEstimator)(estimators.get(i));
+ if(nr.supersedes(mem.getNodeReference())) {
+ ((DataObjectRoutingMemory)mem).noderef = nr;
+ if(e == null)
+ Core.logger.log(this, "Got "+mem+" but not
estimator!",
+ Logger.NORMAL);
+ else
+ e.ref = nr;
+ }
+ } else {
+ if(Core.logger.shouldLog(Logger.DEBUG))
+ Core.logger.log(this, "updateReference("+nr+") did
nothing",
+ Logger.DEBUG);
+ }
+ }
+
public synchronized void reference(Key k, NodeReference nr) {
Identity i = nr.getIdentity();
RoutingMemory mem = routingStore.getNode(i);
if(mem == null) {
+ if(!Version.checkGoodVersion(nr.getVersion(), true)) {
+ Core.logger.log(this, "Rejecting reference "+nr+" -
too old",
+ Logger.NORMAL);
+ return;
+ }
// New node, estimator centered on k
mem = routingStore.putNode(nr);
NodeEstimator e = factory.create(mem, mem.getNodeReference(),
@@ -119,6 +152,8 @@
estimators.put(e.ref.getIdentity(), e);
} else if(nr.supersedes(mem.getNodeReference())) {
((DataObjectRoutingMemory)mem).noderef = nr;
+ NodeEstimator e = (NodeEstimator)(estimators.get(i));
+ e.ref = nr;
}
// enforce max nodes limit
Index: RoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/RoutingTable.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -w -r1.7 -r1.8
--- RoutingTable.java 30 Aug 2003 23:16:52 -0000 1.7
+++ RoutingTable.java 22 Oct 2003 22:07:16 -0000 1.8
@@ -24,6 +24,11 @@
boolean references(Identity id);
/**
+ * Update a reference in the routing table, if there is one
+ */
+ void updateReference(NodeReference ref);
+
+ /**
* @return returns the NodeReference for the given Identity
* null if no such noderef is present
*/
Index: StandardNodeEstimator.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/StandardNodeEstimator.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -w -r1.8 -r1.9
--- StandardNodeEstimator.java 22 Oct 2003 12:32:06 -0000 1.8
+++ StandardNodeEstimator.java 22 Oct 2003 22:07:16 -0000 1.9
@@ -389,8 +389,12 @@
pw.println("Maximum: "+te.formatFromRaw(te.highestRaw(), et)+
"<br>");
te.dumpHtml(pw);
+ pw.println("With last 64 points:<br/>");
pw.println("<img src=\""+imagePrefix+graphName(i)+
- "\" width=\"640\" height=\"480\"><br>");
+ "\" width=\"640\" height=\"480\"><br/>");
+ pw.println("Clipped, showing estimator detail:<br/>");
+ pw.println("<img src=\""+imagePrefix+graphName(i)+
+ "&clippoints=true\" width=\"640\"
height=\"480\"><br/>");
}
pw.println("</table></body></html>");
pw.flush();
Index: StoredRoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/StoredRoutingTable.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -w -r1.7 -r1.8
--- StoredRoutingTable.java 18 Sep 2003 17:48:10 -0000 1.7
+++ StoredRoutingTable.java 22 Oct 2003 22:07:16 -0000 1.8
@@ -49,6 +49,15 @@
return mem;
}
+ public void updateReference(NodeReference nr) {
+ RoutingMemory mem;
+ synchronized(this) {
+ mem = routingStore.getNode(nr.getIdentity());
+ if(mem != null && nr.supersedes(mem.getNodeReference()))
+ mem = routingStore.putNode(nr);
+ }
+ }
+
//all threads end up being stuck here
//routingTime goes up several seconds
//cpu load goes 100%
Index: TreeRoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/TreeRoutingTable.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -w -r1.26 -r1.27
--- TreeRoutingTable.java 18 Sep 2003 17:48:10 -0000 1.26
+++ TreeRoutingTable.java 22 Oct 2003 22:07:16 -0000 1.27
@@ -3,6 +3,7 @@
import freenet.Key;
import freenet.Identity;
import freenet.Core;
+import freenet.Version;
import freenet.node.NodeReference;
import freenet.support.*;
import freenet.support.Comparable;
@@ -61,6 +62,12 @@
public synchronized void reference(Key k, NodeReference nr) {
+ if(!Version.checkGoodVersion(nr.getVersion())) {
+ Core.logger.log(this, "Rejecting reference "+nr+" - too old",
+ Logger.NORMAL);
+ return;
+ }
+
long now = System.currentTimeMillis();
RoutingMemory mem = reference(nr);
_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs