Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
dependencymanager-3.0.0
-
None
-
Linux Mint 12, x64, Dell E6520
Description
The filter indexes in the ServiceRegistryCache caches ServiceListeners for a faster lookup.
However, once a ServiceListener is stored in the cache, it will never be released which will eventually lead to an OutOfMemoryError.
This is caused by the implementation of BundleContextIntercepter#removeServiceListener.
While debugging, it appears the cache has no filterindex for arguments null,null and thus leaving the listener in the cache.
Fixed by a rather brute force call to FilterIndex.removeListener() for two reasons: