Deadlock on refrsh Import and refresh
-------------------------------------
Key: FELIX-2437
URL: https://issues.apache.org/jira/browse/FELIX-2437
Project: Felix
Issue Type: Bug
Components: Configuration Admin
Affects Versions: webconsole-3.0.0, framework-2.0.4
Environment: Felix framework 2.0.4
Felix webconsole 3.0.0
Sling
Reporter: christian
Priority: Minor
I encountred a Deadlock using Webconsole (s. stacktrace below)
Stepps to reproduce:
1) in webconsole navigate to "bundles"
2) select and open the detail view of a bundle that has a lot dependencies (I
used sling and as bundle the sling api bundle)
3) click "refresh package import"
4) click "refresh"
It the request from 4) is processed while he one from 3) is still running, you
get a deadlock.
Found one Java-level deadlock:
=============================
"0:0:0:0:0:0:0:1 [1277221470284] GET /system/console/bundles/105 HTTP/1.1":
waiting to lock monitor 0x0039de94 (object 0x06448fd0, a
org.apache.felix.framework.BundleImpl),
which is held by "FelixPackageAdmin"
"FelixPackageAdmin":
waiting to lock monitor 0x0039deb4 (object 0x06235658, a [Ljava.lang.Object;),
which is held by "0:0:0:0:0:0:0:1 [1277221470284] GET
/system/console/bundles/105 HTTP/1.1"
Java stack information for the threads listed above:
===================================================
"0:0:0:0:0:0:0:1 [1277221470284] GET /system/console/bundles/105 HTTP/1.1":
at
org.apache.felix.framework.BundleImpl.getModules(BundleImpl.java:1001)
- waiting to lock <0x06448fd0> (a org.apache.felix.framework.BundleImpl)
at org.apache.felix.framework.Felix.getExportedPackages(Felix.java:3114)
at org.apache.felix.framework.Felix.getExportedPackages(Felix.java:3093)
- locked <0x06235658> (a [Ljava.lang.Object;)
at
org.apache.felix.framework.PackageAdminImpl.getExportedPackages(PackageAdminImpl.java:184)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.listImportExport(BundlesServlet.java:834)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.bundleDetails(BundlesServlet.java:752)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.bundleInfo(BundlesServlet.java:675)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.writeJSON(BundlesServlet.java:570)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.writeJSON(BundlesServlet.java:511)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.renderContent(BundlesServlet.java:485)
at
org.apache.felix.webconsole.AbstractWebConsolePlugin.doGet(AbstractWebConsolePlugin.java:148)
at
org.apache.felix.webconsole.internal.core.BundlesServlet.doGet(BundlesServlet.java:274)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:367)
at
org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:93)
at
org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
at
org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
at
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
at
org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at
org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
at
org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
at
org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.felix.http.proxy.ProxyServlet.service(ProxyServlet.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.sling.launchpad.base.webapp.SlingServletDelegate.service(SlingServletDelegate.java:275)
at
org.apache.sling.launchpad.webapp.SlingServlet.service(SlingServlet.java:130)
at
com.day.j2ee.servletengine.ServletRuntimeEnvironment.service(ServletRuntimeEnvironment.java:228)
at
com.day.j2ee.servletengine.RequestDispatcherImpl.doFilter(RequestDispatcherImpl.java:315)
at
com.day.j2ee.servletengine.FilterChainImpl.doFilter(FilterChainImpl.java:74)
at
com.day.crx.launchpad.filters.CRXLaunchpadLicenseFilter.doFilter(CRXLaunchpadLicenseFilter.java:96)
at
com.day.j2ee.servletengine.FilterChainImpl.doFilter(FilterChainImpl.java:72)
at
com.day.j2ee.servletengine.RequestDispatcherImpl.service(RequestDispatcherImpl.java:334)
at
com.day.j2ee.servletengine.RequestDispatcherImpl.service(RequestDispatcherImpl.java:378)
at
com.day.j2ee.servletengine.ServletHandlerImpl.execute(ServletHandlerImpl.java:313)
at
com.day.j2ee.servletengine.DefaultThreadPool$DequeueThread.run(DefaultThreadPool.java:134)
at java.lang.Thread.run(Thread.java:595)
"FelixPackageAdmin":
at org.apache.felix.framework.Felix.getBundles(Felix.java:2594)
- waiting to lock <0x06235658> (a [Ljava.lang.Object;)
at
org.apache.felix.framework.BundleImpl.createModule(BundleImpl.java:1140)
at org.apache.felix.framework.BundleImpl.refresh(BundleImpl.java:170)
- locked <0x06448fd0> (a org.apache.felix.framework.BundleImpl)
at org.apache.felix.framework.Felix.refreshBundle(Felix.java:3574)
at org.apache.felix.framework.Felix.access$900(Felix.java:39)
at
org.apache.felix.framework.Felix$RefreshHelper.refreshOrRemove(Felix.java:4257)
at org.apache.felix.framework.Felix.refreshPackages(Felix.java:3438)
at
org.apache.felix.framework.PackageAdminImpl.run(PackageAdminImpl.java:331)
at java.lang.Thread.run(Thread.java:595)
Found 1 deadlock.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.