Author: zothar
Date: 2006-07-21 21:20:36 +0000 (Fri, 21 Jul 2006)
New Revision: 9704
Modified:
trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
trunk/freenet/src/freenet/node/InsertHandler.java
trunk/freenet/src/freenet/node/LocationManager.java
trunk/freenet/src/freenet/node/PeerNode.java
trunk/freenet/src/freenet/node/Version.java
Log:
891: Idle time is now time since connected and routing was compatible.
Connected/Backed off peers now report how long they've been connected in the
idle column.
Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2006-07-21 20:40:08 UTC (rev 9703)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2006-07-21 21:20:36 UTC (rev 9704)
@@ -258,7 +258,7 @@
buf2.append(" <th>Location</th>\n");
buf2.append(" <th><span title=\"Temporarily
disconnected. Other node busy? Wait time(s) remaining/total\"
style=\"border-bottom:1px dotted;cursor:help;\">Backoff</span></th>\n");
}
- buf2.append(" <th><span title=\"How long since the node was
last seen\" style=\"border-bottom:1px
dotted;cursor:help;\">Idle</span></th>\n");
+ buf2.append(" <th><span title=\"How long since the node
connected or was last seen\" style=\"border-bottom:1px
dotted;cursor:help;\">Connected / Idle</span></th>\n");
buf2.append(" </tr>\n");
if (peerNodes.length == 0) {
@@ -284,9 +284,12 @@
rows[i] = row;
Object status = new
Integer(pn.getPeerNodeStatus());
- long idle = pn.lastReceivedPacketTime();
- if(((Integer) status).intValue() ==
Node.PEER_NODE_STATUS_NEVER_CONNECTED)
+ long idle = pn.timeLastRoutable();
+ if(pn.isRoutable()) {
+ idle = pn.timeLastConnectionCompleted();
+ } else if(((Integer) status).intValue() ==
Node.PEER_NODE_STATUS_NEVER_CONNECTED) {
idle = pn.getPeerAddedTime();
+ }
String lastBackoffReasonOutputString = "";
if(advancedEnabled) {
String backoffReason =
pn.getLastBackoffReason();
@@ -659,9 +662,6 @@
return " ";
}
long idleSeconds = (now - idle) / 1000;
- if((idleSeconds < 60) && ((peerNodeStatus ==
Node.PEER_NODE_STATUS_CONNECTED) || (peerNodeStatus ==
Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF))) {
- return "0m";
- }
return timeIntervalToString( idleSeconds );
}
Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java 2006-07-21 20:40:08 UTC
(rev 9703)
+++ trunk/freenet/src/freenet/node/InsertHandler.java 2006-07-21 21:20:36 UTC
(rev 9704)
@@ -101,7 +101,7 @@
if(msg == null) {
try {
- if(source.isConnected() && (startTime >
(source.timeLastConnected()+Node.HANDSHAKE_TIMEOUT*4)))
+ if(source.isConnected() && (startTime >
(source.timeLastConnectionCompleted()+Node.HANDSHAKE_TIMEOUT*4)))
Logger.error(this, "Did not receive DataInsert
on "+uid+" from "+source+" !");
Message tooSlow = DMT.createFNPRejectedTimeout(uid);
source.sendAsync(tooSlow, null, 0, this);
Modified: trunk/freenet/src/freenet/node/LocationManager.java
===================================================================
--- trunk/freenet/src/freenet/node/LocationManager.java 2006-07-21 20:40:08 UTC
(rev 9703)
+++ trunk/freenet/src/freenet/node/LocationManager.java 2006-07-21 21:20:36 UTC
(rev 9704)
@@ -386,7 +386,7 @@
}
if(reply == null) {
- if(pn.isRoutable() && (System.currentTimeMillis() -
pn.timeLastConnected() > TIMEOUT*2)) {
+ if(pn.isRoutable() && (System.currentTimeMillis() -
pn.timeLastConnectionCompleted() > TIMEOUT*2)) {
// Timed out! Abort...
Logger.error(this, "Timed out waiting for
SwapRejected/SwapReply on "+uid);
}
@@ -421,7 +421,7 @@
}
if(reply == null) {
- if(pn.isRoutable() && (System.currentTimeMillis() -
pn.timeLastConnected() > TIMEOUT*2)) {
+ if(pn.isRoutable() && (System.currentTimeMillis() -
pn.timeLastConnectionCompleted() > TIMEOUT*2)) {
// Hrrrm!
Logger.error(this, "Timed out waiting for SwapComplete
- malicious node?? on "+uid);
}
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2006-07-21 20:40:08 UTC
(rev 9703)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2006-07-21 21:20:36 UTC
(rev 9704)
@@ -108,6 +108,12 @@
/** When did we last receive a packet? */
private long timeLastReceivedPacket;
+
+ /** When was isConnected() last true? */
+ private long timeLastConnected;
+
+ /** When was isRoutingCompatible() last true? */
+ private long timeLastRoutable;
/** Are we connected? If not, we need to start trying to
* handshake.
@@ -375,6 +381,8 @@
timeLastSentPacket = -1;
timeLastReceivedPacket = -1;
timeLastReceivedSwapRequest = -1;
+ timeLastConnected = -1;
+ timeLastRoutable = -1;
randomizeMaxTimeBetweenPacketSends();
swapRequestsInterval = new SimpleRunningAverage(50,
Node.MIN_INTERVAL_BETWEEN_INCOMING_SWAP_REQUESTS);
@@ -436,6 +444,22 @@
long tempTimeLastReceivedPacket =
Long.parseLong(tempTimeLastReceivedPacketString);
timeLastReceivedPacket = tempTimeLastReceivedPacket;
}
+ String tempTimeLastConnectedString =
metadata.get("timeLastConnected");
+ if(tempTimeLastConnectedString != null) {
+ long tempTimeLastConnected =
Long.parseLong(tempTimeLastConnectedString);
+ timeLastConnected = tempTimeLastConnected;
+ }
+ String tempTimeLastRoutableString =
metadata.get("timeLastRoutable");
+ if(tempTimeLastRoutableString != null) {
+ long tempTimeLastRoutable =
Long.parseLong(tempTimeLastRoutableString);
+ timeLastRoutable = tempTimeLastRoutable;
+ }
+ if(timeLastConnected < 1 && timeLastReceivedPacket > 1) {
+ timeLastConnected = timeLastReceivedPacket;
+ }
+ if(timeLastRoutable < 1 && timeLastReceivedPacket > 1) {
+ timeLastRoutable = timeLastReceivedPacket;
+ }
String tempPeerAddedTimeString = metadata.get("peerAddedTime");
if(tempPeerAddedTimeString != null) {
long tempPeerAddedTime =
Long.parseLong(tempPeerAddedTimeString);
@@ -715,11 +739,25 @@
return isConnected() && isRoutingCompatible();
}
- public synchronized boolean isRoutingCompatible(){
- return isRoutable;
+ public boolean isRoutingCompatible(){
+ long now = System.currentTimeMillis();
+ synchronized(this) {
+ if( isRoutable ) {
+ timeLastRoutable = now;
+ return true;
+ }
+ return false;
+ }
}
- public synchronized boolean isConnected(){
- return isConnected;
+ public boolean isConnected(){
+ long now = System.currentTimeMillis();
+ synchronized(this) {
+ if( isConnected ) {
+ timeLastConnected = now;
+ return true;
+ }
+ return false;
+ }
}
/**
@@ -751,6 +789,14 @@
return timeLastReceivedPacket;
}
+ public synchronized long timeLastConnected() {
+ return timeLastConnected;
+ }
+
+ public synchronized long timeLastRoutable() {
+ return timeLastRoutable;
+ }
+
/**
* @return The time this PeerNode was added to the node
*/
@@ -1659,6 +1705,10 @@
fs.put("detected.udp", getDetectedPeer().toString());
if(lastReceivedPacketTime() > 0)
fs.put("timeLastReceivedPacket",
Long.toString(lastReceivedPacketTime()));
+ if(timeLastConnected() > 0)
+ fs.put("timeLastConnected", Long.toString(timeLastConnected()));
+ if(timeLastRoutable() > 0)
+ fs.put("timeLastRoutable", Long.toString(timeLastRoutable()));
if(getPeerAddedTime() > 0)
fs.put("peerAddedTime", Long.toString(getPeerAddedTime()));
if(neverConnected())
@@ -1732,7 +1782,7 @@
/**
* @return The time at which we last connected (or reconnected).
*/
- public synchronized long timeLastConnected() {
+ public synchronized long timeLastConnectionCompleted() {
return connectedTime;
}
@@ -2162,7 +2212,7 @@
long localRoutingBackedOffUntil = getRoutingBackedOffUntil();
synchronized(this) {
int oldPeerNodeStatus = peerNodeStatus;
- if(isRoutable()) {
+ if(isRoutable()) { // Function use also updates
timeLastConnected and timeLastRoutable
peerNodeStatus =
Node.PEER_NODE_STATUS_CONNECTED;
if(now < localRoutingBackedOffUntil ) {
peerNodeStatus =
Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF;
@@ -2181,7 +2231,7 @@
}
} else if(isDisabled) {
peerNodeStatus = Node.PEER_NODE_STATUS_DISABLED;
- } else if(isConnected &&
verifiedIncompatibleNewerVersion) {
+ } else if(isConnected() &&
verifiedIncompatibleNewerVersion) {
peerNodeStatus = Node.PEER_NODE_STATUS_TOO_NEW;
} else if(isConnected &&
verifiedIncompatibleOlderVersion) {
peerNodeStatus = Node.PEER_NODE_STATUS_TOO_OLD;
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-21 20:40:08 UTC (rev
9703)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-21 21:20:36 UTC (rev
9704)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 890;
+ private static final int buildNumber = 891;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 870;