Author: zothar
Date: 2006-06-01 00:59:54 +0000 (Thu, 01 Jun 2006)
New Revision: 8962

Modified:
   trunk/freenet/src/freenet/node/DNSRequester.java
   trunk/freenet/src/freenet/node/PacketSender.java
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/Version.java
Log:
Move PeerNode status updater from PacketSender to DNSRequester, leaving 
PacketSender one less lock location to worry about.  Moved ARKFetcher.start() 
call out of synchronized in sentHandshake() and couldNotSendHandshake(), which 
seems logical to me.  This second item resulted from my investigation into the 
stack trace reported on bug #400

Modified: trunk/freenet/src/freenet/node/DNSRequester.java
===================================================================
--- trunk/freenet/src/freenet/node/DNSRequester.java    2006-05-31 22:02:36 UTC 
(rev 8961)
+++ trunk/freenet/src/freenet/node/DNSRequester.java    2006-06-01 00:59:54 UTC 
(rev 8962)
@@ -52,6 +52,11 @@
         PeerManager pm = node.peers;
         PeerNode[] nodes = pm.myPeers;
         long now = System.currentTimeMillis();
+        // Run the time sensitive status updater separately
+        for(int i=0;i<nodes.length;i++) {
+            PeerNode pn = nodes[i];
+            pn.setPeerNodeStatus(now);
+        }
         if((now - lastLogTime) > 1000) {
             Logger.minor(this, "Processing DNS Requests (log rate-limited)");
             lastLogTime = now;

Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java    2006-05-31 22:02:36 UTC 
(rev 8961)
+++ trunk/freenet/src/freenet/node/PacketSender.java    2006-06-01 00:59:54 UTC 
(rev 8962)
@@ -107,11 +107,6 @@
         lastTimeInSeconds = (int) (now / 1000);
         PeerManager pm = node.peers;
         PeerNode[] nodes = pm.myPeers;
-        // Run the time sensitive status updater separately
-        for(int i=0;i<nodes.length;i++) {
-            PeerNode pn = nodes[i];
-            pn.setPeerNodeStatus(now);
-        }
         node.maybeLogPeerNodeStatusSummary(now);
         long nextActionTime = Long.MAX_VALUE;
         long oldTempNow = now;

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-05-31 22:02:36 UTC 
(rev 8961)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-06-01 00:59:54 UTC 
(rev 8962)
@@ -769,23 +769,26 @@
      * Call this method when a handshake request has been
      * sent.
      */
-    public synchronized void sentHandshake() {
+    public void sentHandshake() {
         Logger.debug(this, "sentHandshake(): "+this);
-        long now = System.currentTimeMillis();
-        if(verifiedIncompatibleOlderVersion || 
verifiedIncompatibleNewerVersion) { 
-            // Let them know we're here, but have no hope of connecting
-            sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_SENDS
-              + node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS)
-              + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
-        } else if(invalidVersion() && !firstHandshake) {
-            sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_PROBES
-               + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
-        } else {
-            sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_HANDSHAKE_SENDS
-                       + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS);
+        long now = -1;
+        synchronized(this) {
+            now = System.currentTimeMillis();
+            if(verifiedIncompatibleOlderVersion || 
verifiedIncompatibleNewerVersion) { 
+                // Let them know we're here, but have no hope of connecting
+                sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_SENDS
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS)
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
+            } else if(invalidVersion() && !firstHandshake) {
+                sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_PROBES
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
+            } else {
+                sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_HANDSHAKE_SENDS
+                + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS);
+            }
+            firstHandshake = false;
+            this.handshakeCount++;
         }
-        firstHandshake = false;
-        this.handshakeCount++;
         // Don't fetch ARKs for peers we have verified (through handshake) to 
be incompatible with us
         if(handshakeCount == MAX_HANDSHAKE_COUNT && 
!(verifiedIncompatibleOlderVersion || verifiedIncompatibleNewerVersion)) {
                Logger.normal( this, "Starting ARK Fetcher after 
"+handshakeCount+" failed handshakes for "+getPeer()+" with identity 
'"+getIdentityString()+"'");
@@ -797,27 +800,28 @@
      * Call this method when a handshake request could not be sent (i.e. no IP 
address available)
      * sent.
      */
-    public synchronized void couldNotSendHandshake() {
+    public void couldNotSendHandshake() {
         Logger.minor(this, "couldNotSendHandshake(): "+this);
-        long now = System.currentTimeMillis();
-        if(verifiedIncompatibleOlderVersion || 
verifiedIncompatibleNewerVersion) { 
-            // Let them know we're here, but have no hope of connecting
-            sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_SENDS
-              + node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS)
-              + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
-        } else if(invalidVersion() && !firstHandshake) {
-            sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_PROBES
-              + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES)
-              + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
-        } else {
-            sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_HANDSHAKE_SENDS
-              + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS)
-              + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS);
+        long now = -1;
+        synchronized(this) {
+            now = System.currentTimeMillis();
+            if(verifiedIncompatibleOlderVersion || 
verifiedIncompatibleNewerVersion) { 
+                // Let them know we're here, but have no hope of connecting
+                sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_SENDS
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS)
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
+            } else if(invalidVersion() && !firstHandshake) {
+                sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_PROBES
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES)
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
+            } else {
+                sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_HANDSHAKE_SENDS
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS)
+                  + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS);
+            }
+            handshakeIPs = null;
+            this.handshakeCount++;
         }
-       synchronized(this) {
-               handshakeIPs = null;
-        }
-        this.handshakeCount++;
         // Don't fetch ARKs for peers we have verified (through handshake) to 
be incompatible with us
         if(handshakeCount == MAX_HANDSHAKE_COUNT && 
!(verifiedIncompatibleOlderVersion || verifiedIncompatibleNewerVersion)) {
                Logger.normal( this, "Starting ARK Fetcher after 
"+handshakeCount+" failed handshakes(2) for "+getPeer()+" with identity 
'"+getIdentityString()+"'");

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-05-31 22:02:36 UTC (rev 
8961)
+++ trunk/freenet/src/freenet/node/Version.java 2006-06-01 00:59:54 UTC (rev 
8962)
@@ -44,7 +44,7 @@
        public static final int lastGoodStableBuild = 1;

        /** Revision number of Version.java as read from CVS */
-       public static final String cvsRevision = "@custom@";
+       public static final String cvsRevision = "8961M";

        private static boolean logDEBUG = 
Logger.shouldLog(Logger.DEBUG,Version.class);



Reply via email to