From af4786ce0e9a0668e0e55c7f2ca8f890f1610193 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 18 Oct 2012 01:29:14 +0000 Subject: [PATCH] fixes --- .../router/update/ConsoleUpdateManager.java | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java index dfba379564..33e83eee7b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java @@ -74,6 +74,7 @@ public class ConsoleUpdateManager implements UpdateManager { private volatile String _status; private static final long DEFAULT_MAX_TIME = 3*60*60*1000L; + private static final long DEFAULT_CHECK_TIME = 60*1000; public ConsoleUpdateManager(RouterContext ctx) { _context = ctx; @@ -162,7 +163,12 @@ public class ConsoleUpdateManager implements UpdateManager { for (RegisteredChecker r : _registeredCheckers) { if (r.type == type) { String current = getDownloadedOrInstalledVersion(type, id); - UpdateTask t = r.checker.check(type, r.method, id, current, maxWait); + UpdateTask t; + synchronized(_activeCheckers) { + t = r.checker.check(type, r.method, id, current, maxWait); + if (t != null) + _activeCheckers.add(t); + } if (t != null) { synchronized(t) { try { @@ -189,9 +195,13 @@ public class ConsoleUpdateManager implements UpdateManager { for (RegisteredChecker r : _registeredCheckers) { if (r.type == type) { String current = getDownloadedOrInstalledVersion(type, id); - UpdateTask t = r.checker.check(type, r.method, id, current, 5*60*1000); - if (t != null) - break; + synchronized(_activeCheckers) { + UpdateTask t = r.checker.check(type, r.method, id, current, DEFAULT_CHECK_TIME); + if (t != null) { + _activeCheckers.add(t); + break; + } + } } } } @@ -340,10 +350,12 @@ public class ConsoleUpdateManager implements UpdateManager { * Stop all checks in progress */ public void stopChecks() { - for (UpdateTask t : _activeCheckers) { - t.shutdown(); + synchronized(_activeCheckers) { + for (UpdateTask t : _activeCheckers) { + t.shutdown(); + } + _activeCheckers.clear(); } - _activeCheckers.clear(); } /** @@ -458,11 +470,13 @@ public class ConsoleUpdateManager implements UpdateManager { // check in case unregistered later if (!_registeredUpdaters.contains(r)) continue; + VersionAvailable va = _available.get(ui); + String newVer = va != null ? va.version : ""; for (Map.Entry<UpdateMethod, List<URI>> e : sourceMap.entrySet()) { UpdateMethod meth = e.getKey(); if (r.type == ui.type && r.method == meth) { - // fixme - UpdateTask t = r.updater.update(ui.type, meth, e.getValue(), ui.id, "", maxTime); + UpdateTask t = r.updater.update(ui.type, meth, e.getValue(), + ui.id, newVer, maxTime); if (t != null) { // race window here // store the remaining ones for retrying @@ -602,7 +616,9 @@ public class ConsoleUpdateManager implements UpdateManager { public void notifyCheckComplete(UpdateTask task, boolean newer, boolean success) { if (_log.shouldLog(Log.INFO)) _log.info(task.toString() + " complete"); - _activeCheckers.remove(task); + synchronized(_activeCheckers) { + _activeCheckers.remove(task); + } String msg = null; switch (task.getType()) { case NEWS: -- GitLab