]
Tomasz Adamski reassigned WFLY-9954:
------------------------------------
Assignee: Richard Opalka (was: Romain Pelisse)
Too many services and dependencies created for EJBs
---------------------------------------------------
Key: WFLY-9954
URL:
https://issues.jboss.org/browse/WFLY-9954
Project: WildFly
Issue Type: Bug
Components: EJB
Reporter: David Lloyd
Assignee: Richard Opalka
Priority: Critical
If a deployment contains more than 2730 EJBs, the deployment's INSTALL phase will get
a stack trace like this:
{noformat}
2018-03-25 08:22:34,115 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4)
MSC000001: Failed to start service jboss.deployment.unit."example.jar".INSTALL:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."example.jar".INSTALL: WFLYSRV0153: Failed to process
phase INSTALL of deployment "example.jar"
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Too many dependencies specified (max is
16383) .......... (*1)
at
org.jboss.msc.service.ServiceBuilderImpl.doAddDependency(ServiceBuilderImpl.java:216)
at
org.jboss.msc.service.ServiceBuilderImpl.addDependenciesNoCheck(ServiceBuilderImpl.java:158)
at
org.jboss.msc.service.ServiceBuilderImpl.addDependencies(ServiceBuilderImpl.java:152)
at
org.jboss.msc.service.ServiceBuilderImpl.addDependencies(ServiceBuilderImpl.java:142)
at
org.jboss.as.naming.deployment.JndiNamingDependencyProcessor.deploy(JndiNamingDependencyProcessor.java:59)
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147)
... 5 more
{noformat}
The reason is that the INSTALL phase has six additional dependencies per EJB:
* service
jboss.naming.context.java.comp.example.example.<class-name>.InAppClientContainer
* service jboss.naming.context.java.comp.example.example.<class-name>.InstanceName
* service
jboss.deployment.unit."example.jar".component.<class-name>.JndiBindingsService
* service
jboss.naming.context.java.comp.example.example.<class-name>.UserTransaction
* service
jboss.naming.context.java.comp.example.example.<class-name>.TransactionSynchronizationRegistry
* service jboss.naming.context.java.comp.example.example.<class-name>.BeanManager
We probably should not be creating N dependencies per deployment object since all the
services of a given kind are always started together. They could be grouped at a
deployment level instead.