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(){