Author: zothar
Date: 2006-06-04 20:49:31 +0000 (Sun, 04 Jun 2006)
New Revision: 9051
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/PacketSender.java
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java
Log:
781: Alert when a peer has never been connected in the two weeks since it was
added. Bump the version number to 'deploy' recent changes.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-06-04 19:31:01 UTC (rev
9050)
+++ trunk/freenet/src/freenet/node/Node.java 2006-06-04 20:49:31 UTC (rev
9051)
@@ -478,6 +478,12 @@
private final long peerNodeStatusLogInterval = 1000;
/** PeerNode statuses, by status */
private final HashMap peerNodeStatuses;
+ /** Next time to update oldestNeverConnectedPeerAge */
+ private long nextOldestNeverConnectedPeerAgeUpdateTime = -1;
+ /** oldestNeverConnectedPeerAge update interval (milliseconds) */
+ private final long oldestNeverConnectedPeerAgeUpdateInterval = 5000;
+ /** age of oldest never connected peer (milliseconds) */
+ private long oldestNeverConnectedPeerAge = 0;
private final HashSet runningUIDs;
@@ -2931,6 +2937,33 @@
}
/**
+ * Update oldestNeverConnectedPeerAge if the timer has expired
+ */
+ public void maybeUpdateOldestNeverConnectedPeerAge(long now) {
+ if(now > nextOldestNeverConnectedPeerAgeUpdateTime) {
+ oldestNeverConnectedPeerAge = 0;
+ if(peers != null) {
+ PeerNode[] peerList = peers.myPeers;
+ for(int i=0;i<peerList.length;i++) {
+ PeerNode pn = peerList[i];
+ if(pn.getPeerNodeStatus() == PEER_NODE_STATUS_NEVER_CONNECTED) {
+ if((now - pn.getPeerAddedTime()) > oldestNeverConnectedPeerAge) {
+ oldestNeverConnectedPeerAge = now - pn.getPeerAddedTime();
+ }
+ }
+ }
+ }
+ if(oldestNeverConnectedPeerAge > 0)
+ Logger.minor(this, "Oldest never connected peer is
"+oldestNeverConnectedPeerAge+"ms old");
+ nextOldestNeverConnectedPeerAgeUpdateTime = now +
oldestNeverConnectedPeerAgeUpdateInterval;
+ }
+ }
+
+ public long getOldestNeverConnectedPeerAge() {
+ return oldestNeverConnectedPeerAge;
+ }
+
+ /**
* Handle a received node to node text message
*/
public void receivedNodeToNodeTextMessage(Message m) {
Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java 2006-06-04 19:31:01 UTC
(rev 9050)
+++ trunk/freenet/src/freenet/node/PacketSender.java 2006-06-04 20:49:31 UTC
(rev 9051)
@@ -126,6 +126,7 @@
}
}
node.maybeLogPeerNodeStatusSummary(now);
+ node.maybeUpdateOldestNeverConnectedPeerAge(now);
long nextActionTime = Long.MAX_VALUE;
long oldTempNow = now;
for(int i=0;i<nodes.length;i++) {
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-06-04 19:31:01 UTC (rev
9050)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-04 20:49:31 UTC (rev
9051)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 780;
+ private static final int buildNumber = 781;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 765;
Modified: trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java
2006-06-04 19:31:01 UTC (rev 9050)
+++ trunk/freenet/src/freenet/node/useralerts/PeerManagerUserAlert.java
2006-06-04 20:49:31 UTC (rev 9051)
@@ -10,6 +10,7 @@
boolean isValid=true;
int bwlimitDelayTime = 1;
int nodeAveragePingTime = 1;
+ long oldestNeverConnectedPeerAge = 0;
/** How many connected peers we need to not get alert about not enough
*/
static final int MIN_CONN_THRESHOLD = 3;
@@ -29,6 +30,9 @@
/** How high can nodeAveragePingTime be before we alert (in
milliseconds)*/
static final int MAX_NODE_AVERAGE_PING_TIME_THRESHOLD = 1500;
+ /** How high can oldestNeverConnectedPeerAge be before we alert (in
milliseconds)*/
+ static final long MAX_OLDEST_NEVER_CONNECTED_PEER_AGE_THRESHOLD =
((long) 2)*24*60*60*1000; // 2 weeks
+
public PeerManagerUserAlert(Node n) {
this.n = n;
}
@@ -54,6 +58,8 @@
return "bwlimitDelayTime too high";
if(nodeAveragePingTime > MAX_NODE_AVERAGE_PING_TIME_THRESHOLD)
return "nodeAveragePingTime too high";
+ if(oldestNeverConnectedPeerAge >
MAX_OLDEST_NEVER_CONNECTED_PEER_AGE_THRESHOLD)
+ return "Never connected peer(s) too old";
else throw new IllegalArgumentException("Not valid");
}
@@ -90,6 +96,8 @@
s = "This node has to wait too long for available
bandwidth ("+bwlimitDelayTime+" > "+MAX_BWLIMIT_DELAY_TIME_THRESHOLD+").
Increase your output bandwidth limit and/or remove some peers to improve the
situation.";
} else if(nodeAveragePingTime >
MAX_NODE_AVERAGE_PING_TIME_THRESHOLD) {
s = "This node is having trouble talking with it's
peers quickly enough ("+nodeAveragePingTime+" >
"+MAX_NODE_AVERAGE_PING_TIME_THRESHOLD+"). Decrease your output bandwidth
limit and or remove som peers to improve the situation.";
+ } else if(oldestNeverConnectedPeerAge >
MAX_OLDEST_NEVER_CONNECTED_PEER_AGE_THRESHOLD) {
+ s = "One or more of your node's peers have never
connected in the two weeks since they were added. Consider removing them since
they are affecting performance.";
} else throw new IllegalArgumentException("Not valid");
return s;
}
@@ -110,13 +118,15 @@
// only update here so we don't get odd behavior with it
fluctuating
bwlimitDelayTime = (int) n.getBwlimitDelayTime();
nodeAveragePingTime = (int) n.getNodeAveragePingTime();
+ oldestNeverConnectedPeerAge = (int)
n.getOldestNeverConnectedPeerAge();
return (peers == 0 ||
conns < 3 ||
(peers - conns) > MAX_DISCONN_PEER_THRESHOLD ||
conns > MAX_CONN_THRESHOLD ||
peers > MAX_PEER_THRESHOLD ||
bwlimitDelayTime >
MAX_BWLIMIT_DELAY_TIME_THRESHOLD ||
- nodeAveragePingTime >
MAX_NODE_AVERAGE_PING_TIME_THRESHOLD) &&
+ nodeAveragePingTime >
MAX_NODE_AVERAGE_PING_TIME_THRESHOLD ||
+ oldestNeverConnectedPeerAge >
MAX_OLDEST_NEVER_CONNECTED_PEER_AGE_THRESHOLD) &&
isValid;
}