diff --git a/sisu-osgi/sisu-osgi-connect/src/main/java/org/eclipse/sisu/osgi/connect/PlexusConnectFramework.java b/sisu-osgi/sisu-osgi-connect/src/main/java/org/eclipse/sisu/osgi/connect/PlexusConnectFramework.java index c5cc019095..5d53fbbe5a 100644 --- a/sisu-osgi/sisu-osgi-connect/src/main/java/org/eclipse/sisu/osgi/connect/PlexusConnectFramework.java +++ b/sisu-osgi/sisu-osgi-connect/src/main/java/org/eclipse/sisu/osgi/connect/PlexusConnectFramework.java @@ -62,7 +62,7 @@ class PlexusConnectFramework // private final ClassRealm realm; final PlexusFrameworkConnectServiceFactory factory; final boolean foreign; - private ServiceTracker serviceTracker; + private ServiceTracker logReaderServiceTracker; private String storagePath; PlexusConnectFramework(Framework framework, Logger logger, PlexusFrameworkConnectServiceFactory factory, @@ -336,7 +336,7 @@ private static boolean isOnlyDebug(LogEntry entry) { @Override public void start(BundleContext context) { context.addFrameworkListener(this); - serviceTracker = new ServiceTracker<>(context, LogReaderService.class, new ServiceTrackerCustomizer<>() { + logReaderServiceTracker = new ServiceTracker<>(context, LogReaderService.class, new ServiceTrackerCustomizer<>() { @Override public LogReaderService addingService(ServiceReference reference) { @@ -357,12 +357,14 @@ public void removedService(ServiceReference reference, LogRead context.ungetService(reference); } }); - serviceTracker.open(); + logReaderServiceTracker.open(); } @Override public void stop(BundleContext context) { context.removeFrameworkListener(this); - serviceTracker.close(); + logReaderServiceTracker.close(); + trackerMap.values().forEach(ServiceTracker::close); + trackerMap.clear(); } }