Avoid useless framework refreshes from bundle watcher Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/400c4794 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/400c4794 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/400c4794
Branch: refs/heads/master Commit: 400c47944ef98b2f89aaea855596dc6fb418e529 Parents: f6d4208 Author: Guillaume Nodet <gno...@gmail.com> Authored: Tue May 27 17:52:36 2014 +0200 Committer: Guillaume Nodet <gno...@gmail.com> Committed: Tue May 27 17:52:36 2014 +0200 ---------------------------------------------------------------------- .../bundle/core/internal/BundleWatcherImpl.java | 34 +++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/400c4794/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java ---------------------------------------------------------------------- diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java index cb52567..5181bc3 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java @@ -115,22 +115,24 @@ public class BundleWatcherImpl implements Runnable, BundleListener, BundleWatche logger.error("Error updating bundle.", ex); } } - try { - final CountDownLatch latch = new CountDownLatch(1); - wiring.refreshBundles(updated, new FrameworkListener() { - public void frameworkEvent(FrameworkEvent event) { - latch.countDown(); - } - }); - latch.await(); - } catch (InterruptedException e) { - running.set(false); - } - for (Bundle bundle : updated) { + if (!updated.isEmpty()) { try { - bundle.start(Bundle.START_TRANSIENT); - } catch (BundleException ex) { - logger.warn("Error starting bundle", ex); + final CountDownLatch latch = new CountDownLatch(1); + wiring.refreshBundles(updated, new FrameworkListener() { + public void frameworkEvent(FrameworkEvent event) { + latch.countDown(); + } + }); + latch.await(); + } catch (InterruptedException e) { + running.set(false); + } + for (Bundle bundle : updated) { + try { + bundle.start(Bundle.START_TRANSIENT); + } catch (BundleException ex) { + logger.warn("Error starting bundle", ex); + } } } } @@ -151,7 +153,7 @@ public class BundleWatcherImpl implements Runnable, BundleListener, BundleWatche } private void updateBundleIfNecessary(File localRepository, List<Bundle> updated, Bundle bundle) - throws FileNotFoundException, BundleException, IOException { + throws BundleException, IOException { File location = getBundleExternalLocation(localRepository, bundle); if (location != null && location.exists() && location.lastModified() > bundle.getLastModified()) { InputStream is = new FileInputStream(location);