[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [ecf-dev] CompositeDiscoveryContainer and zoo discovery | 
Hi Folks,
I'm testing some new remote management services [1]...i.e. OSGi remote 
services for managing and OSGi runtime within Eclipse and am getting a 
problem that seems to be related to the CompositeDiscoveryContainer and 
zoodiscovery.
Specifically, when the CompositeDiscoveryContainer is active (i.e. the 
org.eclipse.ecf.provider.discovery bundle), and a remote service is 
published, the thread doing the publishing gets permanently blocked in 
this line of code within zoodiscovery WatchManager:
    public void publish(AdvertisedService published) {
        Assert.isNotNull(published);
        try {
            /* wait for the server to get ready */
            while (!writeRootLock.isOpen())
                Thread.sleep(300);                        <--- Gets 
hung up here.  writeRootLock.isOpen() never is opened.
        } catch (InterruptedException e) {
            Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
        }
...
I can see from the stack trace that this publish is being called from 
the CompositeDiscoveryContainer (rather than via ZooDiscoveryContainer 
directly).   If I stop the composite container bundle *before* 
registering the remote service (which triggers the discovery publish) 
then everything works fine (no hang).   My suspicion is that there is 
something about the initialization of zoodiscovery that is causing a 
race, and triggering this hang, but I'm not sure.
As a work around, is it possible to disable the 
CompositeDiscoveryContainer...in some other way than explicitly stopping 
it's bundle?   Another question:  should we stop installing the 
CompositeDiscoveryContainer bundle?   Also:  is there some way to 
restrict a given remote service export to use only one discovery 
provider (a specific one) rather than using all active discovery 
providers by default?  Perhaps this is an addition we should make for 
ECF's remote services impl.  Opinions?
Thanksinadvance,
Scott
[1] https://github.com/ECF/OSGIRemoteManagement