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;
        }



Reply via email to