Author: toad
Date: 2008-08-01 13:40:16 +0000 (Fri, 01 Aug 2008)
New Revision: 21555

Modified:
   trunk/freenet/src/freenet/node/updater/NodeUpdater.java
Log:
Merge locking/deadlock fix from 21089

Modified: trunk/freenet/src/freenet/node/updater/NodeUpdater.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/NodeUpdater.java     2008-08-01 
13:10:00 UTC (rev 21554)
+++ trunk/freenet/src/freenet/node/updater/NodeUpdater.java     2008-08-01 
13:40:16 UTC (rev 21555)
@@ -82,16 +82,20 @@
                }
        }

-       public synchronized void onFoundEdition(long l, USK key){
+       public void onFoundEdition(long l, USK key){
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                if(logMINOR) Logger.minor(this, "Found edition "+l);
                System.err.println("Found "+(extUpdate?"freenet-ext.jar " : 
"")+"update edition "+l);
+               synchronized(this) {
                if(!isRunning) return;
                int found = (int)key.suggestedEdition;

-               if(found > availableVersion) {
+               if(found <= availableVersion){
+                       return;
+               }
                        Logger.minor(this, "Updating availableVersion from " + 
availableVersion + " to " + found + " and queueing an update");
                        this.availableVersion = found;
+               }
                        ticker.queueTimedJob(new Runnable() {

                                public void run() {
@@ -100,7 +104,6 @@
                        }, 60 * 1000); // leave some time in case we get later 
editions
                        // LOCKING: Always take the NodeUpdater lock *BEFORE* 
the NodeUpdateManager lock
                        manager.onStartFetching(extUpdate);
-               }
        }

        public void maybeUpdate(){


Reply via email to