[
http://jira.amdatu.org/jira/browse/AMDATU-314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10981#comment-10981
]
Ivo Ladage - van Doorn commented on AMDATU-314:
-----------------------------------------------
Seems to me that the deadlock appears in the felix dependency manager;
Configuration Updater [WAITING] CPU time: 0:06
java.lang.Object.wait(long)
java.lang.Object.wait()
org.apache.felix.framework.Felix.acquireBundleLock(BundleImpl, int)
org.apache.felix.framework.Felix.registerService(BundleImpl, String[], Object,
Dictionary)
org.apache.felix.framework.BundleContextImpl.registerService(String[], Object,
Dictionary)
org.apache.felix.framework.BundleContextImpl.registerService(String, Object,
Dictionary)
org.apache.felix.dm.impl.ComponentImpl.start()
org.apache.felix.dm.DependencyManager.add(Component)
org.apache.felix.dm.impl.AbstractDecorator.added(ServiceReference, Object)
sun.reflect.GeneratedMethodAccessor20.invoke(Object, Object[])
sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[])
java.lang.reflect.Method.invoke(Object, Object[])
org.apache.felix.dm.InvocationUtil.invokeMethod(Object, Class, String,
Class[][], Object[][], boolean)
org.apache.felix.dm.InvocationUtil.invokeCallbackMethod(Object, String,
Class[][], Object[][])
org.apache.felix.dm.impl.ComponentImpl.invokeCallbackMethod(Object[], String,
Class[][], Object[][])
org.apache.felix.dm.impl.dependencies.ServiceDependencyImpl.invoke(DependencyService,
ServiceReference, Object, String)
org.apache.felix.dm.impl.dependencies.ServiceDependencyImpl.invokeAdded(DependencyService,
ServiceReference, Object)
org.apache.felix.dm.impl.dependencies.ServiceDependencyImpl.addedService(ServiceReference,
Object)
org.apache.felix.dm.tracker.ServiceTracker$Tracked.customizerAdded(Object,
Object, Object)
org.apache.felix.dm.tracker.AbstractTracked.trackAdding(Object, Object)
org.apache.felix.dm.tracker.AbstractTracked.track(Object, Object)
org.apache.felix.dm.tracker.ServiceTracker$Tracked.serviceChanged(ServiceEvent)
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(Bundle,
EventListener, Filter, Object, EventObject, Dictionary)
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(Logger,
int, Object[], EventObject, Dictionary)
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(ServiceEvent,
Dictionary, Framework)
org.apache.felix.framework.Felix.fireServiceEvent(ServiceEvent, Dictionary)
org.apache.felix.framework.Felix.access$000(Felix, ServiceEvent, Dictionary)
org.apache.felix.framework.Felix$2.serviceChanged(ServiceEvent, Dictionary)
org.apache.felix.framework.ServiceRegistry.registerService(Bundle, String[],
Object, Dictionary)
org.apache.felix.framework.Felix.registerService(BundleImpl, String[], Object,
Dictionary)
org.apache.felix.framework.BundleContextImpl.registerService(String[], Object,
Dictionary)
org.apache.felix.framework.BundleContextImpl.registerService(String, Object,
Dictionary)
org.apache.felix.dm.impl.ComponentImpl.registerService()
org.apache.felix.dm.impl.ComponentImpl.bindService(State)
org.apache.felix.dm.impl.ComponentImpl.access$400(ComponentImpl, State)
org.apache.felix.dm.impl.ComponentImpl$7.run()
org.apache.felix.dm.impl.SerialExecutor$1.run()
org.apache.felix.dm.impl.SerialExecutor.scheduleNext()
org.apache.felix.dm.impl.SerialExecutor.access$000(SerialExecutor)
org.apache.felix.dm.impl.SerialExecutor$1.run()
org.apache.felix.dm.impl.SerialExecutor.scheduleNext()
org.apache.felix.dm.impl.SerialExecutor.execute()
org.apache.felix.dm.impl.ComponentImpl.calculateStateChanges(State, State)
org.apache.felix.dm.impl.ComponentImpl.start()
org.apache.felix.dm.DependencyManager.add(Component)
org.amdatu.core.tenant.service.TenantManagementServiceImpl.createTenantService(TenantEntity)
org.amdatu.core.tenant.service.TenantManagementServiceImpl.createTenant(String,
String, Map)
org.amdatu.core.tenant.service.TenantManagementCache.createTenant(String,
String, Map)
org.amdatu.core.tenant.service.TenantConfigServiceImpl.update(List)
org.amdatu.core.tenant.service.TenantConfigServiceImpl.update()
org.amdatu.core.tenant.service.TenantConfigServiceImpl.updated(Dictionary)
sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
sun.reflect.NativeMethodAccessorImpl.invoke(Object, Object[])
sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[])
java.lang.reflect.Method.invoke(Object, Object[])
org.apache.felix.dm.InvocationUtil.invokeMethod(Object, Class, String,
Class[][], Object[][], boolean)
org.apache.felix.dm.impl.dependencies.ConfigurationDependencyImpl.invokeUpdate(DependencyService,
Object, Dictionary)
org.apache.felix.dm.impl.dependencies.ConfigurationDependencyImpl.updated(Dictionary)
org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run()
org.apache.felix.cm.impl.UpdateThread.run()
Attached are a thread dump and list of 100 tenants you can copy/paste to
org.amdatu.core.tenant.cfg to reproduce the issue.
Marcel; can you take a look at this issue?
> Deadlock when creating many tenants from ConfigAdmin
> ----------------------------------------------------
>
> Key: AMDATU-314
> URL: http://jira.amdatu.org/jira/browse/AMDATU-314
> Project: Amdatu
> Issue Type: Bug
> Components: Amdatu Core
> Affects Versions: 0.1.1
> Reporter: Ivo Ladage - van Doorn
> Assignee: Ivo Ladage - van Doorn
> Fix For: 0.1.1
>
>
> If you create many tenants (i.e. 100) at once by adding the tenant
> configuration to the org.amdatu.core.tenant.cfg file in the /deploy
> directory, it ends up quite soon in some kind of deadlock situation. The
> dashboard is not accessible anymore and it doesn't create more then just a
> few tenants.s
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
Amdatu-developers mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-developers