[
https://issues.apache.org/jira/browse/FELIX-3174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13131470#comment-13131470
]
Rob Walker commented on FELIX-3174:
-----------------------------------
I think I may need to revert this back to my earlier email about this being an
issue in servicebinder - apols for the possible red herring.
Both the start level service and Jetty HTTP Service are competing for a lock in
servicebinder code. I think the HTTP Service is waiting for start level to
release the bundle lock. But start level never will because servicebinder lower
in it's thread stack is waiting on a lock held by servicebinder in the HTTP
service thread when it registered it's service.
> Startup freeze caused in acquireBundleLock
> ------------------------------------------
>
> Key: FELIX-3174
> URL: https://issues.apache.org/jira/browse/FELIX-3174
> Project: Felix
> Issue Type: Bug
> Components: Framework
> Affects Versions: framework-4.2.0
> Reporter: Rob Walker
>
> This may be a sub or related case of a few others which I've linked below.
> In the latest trunk we are now seeing a startup scenario where our HTTP
> bundle acquires a lock in the process of registering a service, but the later
> wait for this lock (Felix.java:4862) never seems to get notified.
> It doesn't seem a traditional deadlock per se - no other thread is holding
> this lock. It just seems that the lock never gets notified, hence the HTTP
> bundle never completes it's startup and service registration, causing all our
> other bundles that depend on the HTTP service never to start up.
> Stack trace of locked thread below:
> ====
> "Jetty HTTP Service" daemon prio=6 tid=0x0586ac00 nid=0x19dc in Object.wait()
> [0x05a8f000]
> java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x1f84df50> (a [Ljava.lang.Object;)
> at java.lang.Object.wait(Object.java:485)
> at org.apache.felix.framework.Felix.acquireBundleLock(Felix.java:4862)
> - locked <0x1f84df50> (a [Ljava.lang.Object;)
> at org.apache.felix.framework.Felix.registerService(Felix.java:3205)
> at
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
> at
> org.apache.felix.servicebinder.InstanceManager.requestRegistration(InstanceManager.java:508)
> at
> org.apache.felix.servicebinder.InstanceManager.validate(InstanceManager.java:294)
> - locked <0x1fa2ef78> (a
> org.apache.felix.servicebinder.InstanceManager)
> at
> org.apache.felix.servicebinder.InstanceManager$DependencyManager.serviceChanged(InstanceManager.java:948)
> - locked <0x1fa2ef78> (a
> org.apache.felix.servicebinder.InstanceManager)
> at
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
> at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
> at
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
> at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4252)
> at org.apache.felix.framework.Felix.registerService(Felix.java:3275)
> at
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
> at
> org.apache.felix.http.base.internal.HttpServiceController.register(HttpServiceController.java:135)
> at
> org.apache.felix.http.base.internal.DispatcherServlet.init(DispatcherServlet.java:48)
> at
> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
> at
> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
> at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
> - locked <0x1fa2f0b0> (a java.lang.Object)
> at
> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736)
> at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
> at
> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
> at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
> - locked <0x1fa2f1c0> (a java.lang.Object)
> at
> org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
> at org.mortbay.jetty.Server.doStart(Server.java:224)
> at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
> - locked <0x1fa03e50> (a java.lang.Object)
> at
> org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:181)
> at
> org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:116)
> at
> org.apache.felix.http.jetty.internal.JettyService.run(JettyService.java:307)
> at java.lang.Thread.run(Thread.java:619)
> ====
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira