]
Bartosz Spyrko-Śmietanko edited comment on WFCORE-1245 at 2/15/16 4:49 AM:
---------------------------------------------------------------------------
Some potential solutions:
1. Change ServiceVerificationHelper to include "Services that may be the cause"
sections on each failure [1]
2. Add a step in the deployment to analyze missing services and report if dependency
between subdeployment is found. [2][3]
3. Change the order of deployment phases so that the missing services for EJBs in the
dependant subdeployment are only created after the dependency subdeployment is completed.
[3]
Option 1) reduces number of the reported failures making it a bit easier to analyze the
input and is fairly low-impact. The other 2 options require bigger changes, but give
clearer results to the user.
[1]
Improve readability of missing dependency logs
----------------------------------------------
Key: WFCORE-1245
URL:
https://issues.jboss.org/browse/WFCORE-1245
Project: WildFly Core
Issue Type: Enhancement
Reporter: Bartosz Spyrko-Śmietanko
Assignee: Dennis Reed
Attachments: bz1283294-reproducer.zip
When deploying an ear using initialize-in-order option, if one of the subdeployments
contains an EJB that depends on an EJB from another subdeployment and the dependency
subdeployment fails log output makes it hard to understand the root cause.
Structure of deployment is as follows:
{noformat}
reproducer.ear
|- service-locator.jar
| |- ServiceLocator (Stateless EJB)
| |- TestQueue (JNDI Resource)
|- client.jar
|- TestEjb (Stateless EJB)
|- ServiceLocator
{noformat}
If the TestQueue JNDI resource cannot be injected in the ServiceLocator, the deployment
failure output lists a number of missing services per each EJB in the dependant
subdeployment (.ORB, .HandleDelegate, .ValidatorFactory, etc).
When the dependant subdeployment has a larger number of EJBs the log output very quickly
becomes hard to read.
Example with a single dependant EJB:
{noformat}
14:27:43,092 ERROR [org.jboss.as.controller.management-operation]
(management-handler-thread - 2) WFLYCTL0013: Operation ("deploy") failed -
address: ({"deployment" => "reproducer-1.0-SNAPSHOT.ear"}) -
failure description: {
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"client.jar\".batch.environment
is missing
[jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"client.jar\".beanmanager]",
"jboss.naming.context.java.comp.testEar.client.TestEjb.ValidatorFactory is
missing [jboss.naming.context.java.comp.testEar.client.TestEjb]",
"jboss.naming.context.java.comp.testEar.client.TestEjb.ORB is missing
[jboss.naming.context.java.comp.testEar.client.TestEjb]",
"jboss.naming.context.java.comp.testEar.client.TestEjb.HandleDelegate is
missing [jboss.naming.context.java.comp.testEar.client.TestEjb]",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"client.jar\".weld.weldClassIntrospector
is missing
[jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"client.jar\".beanmanager]",
"jboss.deployment.unit.\"reproducer-1.0-SNAPSHOT.ear\".deploymentCompleteService
is missing
[jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"client.jar\".deploymentCompleteService]",
"jboss.naming.context.java.comp.testEar.client.TestEjb.InstanceName is
missing [jboss.naming.context.java.comp.testEar.client.TestEjb]",
"jboss.naming.context.java.comp.testEar.client.TestEjb.Validator is missing
[jboss.naming.context.java.comp.testEar.client.TestEjb]",
"jboss.naming.context.java.comp.testEar.service-locator.test_ServiceLocator.env.queue.TestQueue
is missing [jboss.naming.context.java.jboss.resources.queue.TestQueue]",
"jboss.naming.context.java.comp.testEar.client.TestEjb.InAppClientContainer
is missing [jboss.naming.context.java.comp.testEar.client.TestEjb]"
],
"WFLYCTL0288: One or more services were unable to start due to one or more
indirect dependencies not being available." => {
"Services that were unable to start:" => [
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"client.jar\".INSTALL",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"service-locator.jar\".CLEANUP",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"service-locator.jar\".component.test_ServiceLocator.JndiBindingsService",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"service-locator.jar\".component.test_ServiceLocator.START",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"service-locator.jar\".deploymentCompleteService",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"service-locator.jar\".jndiDependencyService",
"jboss.deployment.subunit.\"reproducer-1.0-SNAPSHOT.ear\".\"service-locator.jar\".moduleDeploymentRuntimeInformationStart",
"jboss.deployment.unit.\"reproducer-1.0-SNAPSHOT.ear\".CLEANUP"
]
{noformat}