Author: nextgens
Date: 2008-08-19 23:20:05 +0000 (Tue, 19 Aug 2008)
New Revision: 22045

Modified:
   trunk/freenet/src/freenet/node/Announcer.java
Log:
Announcer: reduce locking; it seems to help a lot!

Modified: trunk/freenet/src/freenet/node/Announcer.java
===================================================================
--- trunk/freenet/src/freenet/node/Announcer.java       2008-08-19 21:50:05 UTC 
(rev 22044)
+++ trunk/freenet/src/freenet/node/Announcer.java       2008-08-19 23:20:05 UTC 
(rev 22045)
@@ -242,7 +242,7 @@
        }

        private long timeGotEnoughPeers = -1;
-       
+       private final Object timeGotEnoughPeersLock = new Object();
        private boolean killedAnnouncementTooOld;

        /** @return True if we have enough peers that we don't need to 
announce. */
@@ -254,7 +254,7 @@
                if(opennetCount >= target) {
                        if(logMINOR)
                                Logger.minor(this, "We have enough opennet 
peers: "+opennetCount+" > "+target+" since 
"+(System.currentTimeMillis()-timeGotEnoughPeers)+" ms");
-                       synchronized(this) {
+                       synchronized(timeGotEnoughPeersLock) {
                                if(timeGotEnoughPeers <= 0)
                                        timeGotEnoughPeers = 
System.currentTimeMillis();
                        }
@@ -278,7 +278,7 @@
                        }

                }
-               synchronized(this) {
+               synchronized(timeGotEnoughPeersLock) {
                        timeGotEnoughPeers = -1;
                }
                return false;
@@ -288,8 +288,10 @@
         * Get the earliest time at which we had enough opennet peers. This is 
reset when we drop
         * below the threshold.
         */
-       synchronized long timeGotEnoughPeers() {
-               return timeGotEnoughPeers;
+       long timeGotEnoughPeers() {
+               synchronized(timeGotEnoughPeersLock) {
+                       return timeGotEnoughPeers;
+               }
        }

        private boolean ignoreIPUndetected;


Reply via email to