On 13.02.2015 17:40, David Jencks wrote:
I don't know what the quiesce service is supposed to do either.  However I take 
issue with one statement below… hopefully I misunderstood what you mean:
- bundleA stops which should not affect inflight processing inside bundle A

????????????

Lets suppose A's services are implemented as DS components.  Stopping the bundle will 
deactivate and unregister all the services.  Unless someone has taken care (probably with 
a read-write lock on all the DS event and lifecycle methods and all the service 
operations, something I have never ever seen, and would violate the "quick 
shutdown" expectation) that all the work being done on worker threads has completed 
before deactivate is called, worker threads will continue to operate in the deactivate 
component.  They aren't going to get very far because all the references have been 
removed.

So I rather suspect the quiesce service might be intended to deal with this 
kind of problem, although I have no idea how.
For DS I am not sure what it does when it shuts down a component. If it simply deregisters the component then its injected service objects would still be present. So the inflight call might still work. I am not sure about this though. For blueprint I am also not sure if the inject proxies for services would still work. Probably not.

So yes you are right. In the general case inflight calls might indeed be disturbed. In this case I wonder how this is expected to work in OSGi without an additional API. I also just discussed with Guillaume on IRC that at least after uninstall even the classloader of the bundle might stop working.

I asked about these cases in the osgi dev list to see if plain OSGi has some answers for these problems.

Christian

--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

Reply via email to