Update of /cvsroot/freenet/freenet/src/freenet/node
In directory sc8-pr-cvs1:/tmp/cvs-serv1211/src/freenet/node
Modified Files:
Tag: ngrouting
ConnectionOpener.java
Log Message:
fix race that may have been causing most of the RNFs. logging.
Index: ConnectionOpener.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/ConnectionOpener.java,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- ConnectionOpener.java 21 Aug 2003 02:53:09 -0000 1.1.2.6
+++ ConnectionOpener.java 30 Aug 2003 19:40:55 -0000 1.1.2.7
@@ -21,10 +21,19 @@
int startBackoffDelay=1000;
protected boolean isUnscheduled = true;
public static final Hashtable connOpeners = new Hashtable();
+ protected boolean logDEBUG;
+
+ public String toString() {
+ return super.toString()+": isUnscheduled="+isUnscheduled;
+ }
public static void scheduleConnectionOpener(NodeReference ref,
RoutingTable rt,
Node n) {
+ if(n.logger.shouldLog(Logger.DEBUG))
+ n.logger.log(ConnectionOpener.class,
+ "Scheduling ConnectionOpener for "+ref,
+ Logger.DEBUG);
Identity i = ref.getIdentity();
if(!rt.references(i)) {
if(Core.logger.shouldLog(Logger.DEBUG))
@@ -51,6 +60,7 @@
this.rt = rt;
this.node = node;
this.id = ref.getIdentity();
+ logDEBUG = node.logger.shouldLog(Logger.DEBUG);
}
public String getCheckpointName() {
@@ -58,14 +68,26 @@
}
public long nextCheckpoint() {
- if((!rt.references(id)) ||
- (node.connections.findFreeConnection(id) != null)) {
+ logDEBUG = node.logger.shouldLog(Logger.DEBUG);
+ if(logDEBUG)
+ node.logger.log(this, "nextCheckpoint() on "+this,
+ Logger.DEBUG);
+ boolean rtReferencesMe = rt.references(id);
+ boolean hasFreeConn = node.connections.findFreeConnection(id) != null;
+ if((!rtReferencesMe) || hasFreeConn) {
+ if(logDEBUG)
+ node.logger.log(this, "unscheduling "+this+" (open conns: "+
+ hasFreeConn+", in RT: "+
+ rtReferencesMe+")", Logger.DEBUG);
isUnscheduled = true;
synchronized(connOpeners) {
connOpeners.remove(id);
}
return -1;
}
+ if(logDEBUG)
+ node.logger.log(this, "Scheduling in "+currentDelay+
+ "ms", Logger.DEBUG);
return System.currentTimeMillis()+currentDelay;
}
@@ -74,14 +96,30 @@
}
public synchronized void reschedule() {
+ if(logDEBUG)
+ node.logger.log(this, "Rescheduling "+this,
+ new Exception("debug"), Logger.DEBUG);
if(isUnscheduled) {
- new Checkpoint(this).schedule(node);
isUnscheduled = false;
+ if(logDEBUG)
+ node.logger.log(this, "Was unscheduled: "+this,
+ Logger.DEBUG);
+ new Checkpoint(this).schedule(node);
connOpeners.put(id, this);
- }
+ if(logDEBUG)
+ node.logger.log(this, "Rescheduled: "+this,
+ Logger.DEBUG);
+ } else {
+ if(logDEBUG)
+ node.logger.log(this, "Was already scheduled: "+this,
+ Logger.DEBUG); }
}
public void checkpoint() {
+ logDEBUG = node.logger.shouldLog(Logger.DEBUG);
+ if(logDEBUG)
+ node.logger.log(this, "Running checkpoint on "+this,
+ Logger.DEBUG);
Identity i = ref.getIdentity();
if(!rt.references(i)) return;
if(node.connections.findFreeConnection(id) != null) return;
_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs