[jboss-jira] [JBoss JIRA] (WFLY-4908) Redeploy dependent ear fails with duplicate resource error for persistence unit

Jason Holmberg (JIRA) issues at jboss.org
Fri Dec 18 20:23:00 EST 2015


    [ https://issues.jboss.org/browse/WFLY-4908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13143162#comment-13143162 ] 

Jason Holmberg commented on WFLY-4908:
--------------------------------------

I've cloned https://github.com/jfelix-mgn/wildfly-issue and tested it against the build based on https://github.com/scottmarlow/wildfly/tree/WFLY-4908_cleanupmanagementconsole and it has some interesting results.  

# Undeploying module1 does produce the expected result, in that it brakes module2 because of the dependency.
# Redeploying module1 does produce the logging [~smarlow] cited in this [https://issues.jboss.org/browse/WFLY-4908?focusedCommentId=13125152&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13125152] comment.
# When view the deployments in the console the are still enabled and seems valid, at least according to the console.
# If I look at the console after un-deploying module1, but *before* redeploying, then the console complains and logs an exception, see below.  Not really sure it helps in this case.

{noformat}
=-=-=-> Exception produced when trying to view the deployments in the Console after undeploying module1.ear
18:01:41,298 ERROR [org.jboss.as.controller.management-operation] (XNIO-1 task-1) WFLYCTL0013: Operation ("read-attribute") failed - address: ([
    ("deployment" => "module2.ear"),
    ("subdeployment" => "ejb.jar"),
    ("subsystem" => "jpa"),
    ("hibernate-persistence-unit" => "module2.ear/ejb.jar#module2-pu")
]): java.lang.IllegalStateException: WFLYJPA0068: Persistence unit 'module2.ear/ejb.jar#module2-pu' is not available
	at org.jboss.as.jpa.management.EntityManagerFactoryLookup.entityManagerFactory(EntityManagerFactoryLookup.java:43)
	at org.jboss.as.jpa.hibernate5.management.HibernateAbstractStatistics.getEntityManagerFactory(HibernateAbstractStatistics.java:66)
	at org.jboss.as.jpa.hibernate5.management.HibernateStatistics$16.invoke(HibernateStatistics.java:359)
	at org.jboss.as.jpa.hibernate5.management.HibernateAbstractStatistics.getValue(HibernateAbstractStatistics.java:99)
	at org.jboss.as.jpa.management.ManagementResourceDefinition$1.handle(ManagementResourceDefinition.java:130)
	at org.jboss.as.jpa.management.ManagementResourceDefinition$AbstractMetricsHandler.executeRuntimeStep(ManagementResourceDefinition.java:268)
	at org.jboss.as.controller.AbstractRuntimeOnlyHandler$1.execute(AbstractRuntimeOnlyHandler.java:53)
	at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:890)
	at org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:659)
	at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:370)
	at org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1344)
	at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:392)
	at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:217)
	at org.jboss.as.domain.http.server.DomainApiHandler.handleRequest(DomainApiHandler.java:212)
	at io.undertow.server.handlers.encoding.EncodingHandler.handleRequest(EncodingHandler.java:72)
	at org.jboss.as.domain.http.server.security.SubjectDoAsHandler$1.run(SubjectDoAsHandler.java:72)
	at org.jboss.as.domain.http.server.security.SubjectDoAsHandler$1.run(SubjectDoAsHandler.java:68)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:92)
	at org.jboss.as.domain.http.server.security.SubjectDoAsHandler.handleRequest(SubjectDoAsHandler.java:68)
	at org.jboss.as.domain.http.server.security.SubjectDoAsHandler.handleRequest(SubjectDoAsHandler.java:63)
	at io.undertow.server.handlers.BlockingHandler.handleRequest(BlockingHandler.java:56)
	at org.jboss.as.domain.http.server.DomainApiCheckHandler.handleRequest(DomainApiCheckHandler.java:95)
	at io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)
	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:745)
{noformat}

I think it is worth noting that WildFly does seem to redeploying both EARs when module1 is re-deployed despite what the logging says.

It seems to me that module2 breaking upon module1 un-deployment should be expected, because of the dependency.  Also, it does not seem that unreasonable to me that redeployment might not result in every dependent module deploying cleanly.  I kind of this undeploying a module that other modules depend on is a mistake and only should be done under controlled circumstances. That's my $0.02.  This is different, in my opinion, from the hot-deploy scenario, which does seem to be fixed in this branch.

> Redeploy dependent ear fails with duplicate resource error for persistence unit
> -------------------------------------------------------------------------------
>
>                 Key: WFLY-4908
>                 URL: https://issues.jboss.org/browse/WFLY-4908
>             Project: WildFly
>          Issue Type: Bug
>          Components: JPA / Hibernate
>    Affects Versions: 8.2.0.Final, 9.0.0.CR2, 9.0.0.Final, 10.0.0.CR4
>         Environment: OS:
> Debian GNU/Linux 8.0 (jessie)
> Linux 3.16.0-4-amd64 x86_64 GNU/Linux
> JVM:
> java version "1.8.0_45"
> Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
> Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
> Wildfly: 
> 9.0.0.Final
>            Reporter: Юрий Витковский
>            Assignee: Scott Marlow
>
> I have two EARs:
> {code}
> module1.ear  
> |  
> +--ejb.jar  
>    |  
>   +--META-INF  
>       |  
>       +--persistence.xml with persistence unit "module1-pu" 
> {code}
> and 
> {code}
> module2.ear  
> |  
> +--META-INF  
> |  |  
> |  +--jboss-all.xml  
> |  
> +--ejb.jar  
>    |  
>    +--META-INF  
>       |  
>       +--persistence.xml with persistence unit "module2-pu"  
> {code}
> module2.ear/META-INF/jboss-all.xml contains:
> {code:xml}
> <jboss xmlns="urn:jboss:1.0">  
>   <jboss-deployment-dependencies xmlns="urn:jboss:deployment-dependencies:1.0">  
>   <dependency name="module1.ear" />  
>   </jboss-deployment-dependencies>  
> </jboss>  
> {code}
> When I redeploy module1.ear, module2.ear not redeployed automatically with error: *java.lang.IllegalStateException: WFLYCTL0075: Duplicate resource module2.ear/ejb.jar#module2-pu* (on wildfly 8.2.0.Final: *java.lang.IllegalStateException: JBAS014666: Duplicate resource module2.ear/ejb.jar#module2-pu*)
> Full redeploy log:
> {code}
> 09:11:31,425 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0011: Stopping Persistence Unit (phase 2 of 2) Service 'module2.ear/ejb.jar#module2-pu'  
> 09:11:31,426 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0011: Stopping Persistence Unit (phase 1 of 2) Service 'module2.ear/ejb.jar#module2-pu'  
> 09:11:31,431 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0011: Stopping Persistence Unit (phase 2 of 2) Service 'module1.ear/ejb.jar#module1-pu'  
> 09:11:31,434 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0011: Stopping Persistence Unit (phase 1 of 2) Service 'module1.ear/ejb.jar#module1-pu'  
> 09:11:31,437 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0208: Stopped subdeployment (runtime-name: ejb.jar) in 17ms  
> 09:11:31,438 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: Stopped deployment module1.ear (runtime-name: module1.ear) in 18ms  
> 09:11:31,495 INFO  [org.jboss.as.server] (management-handler-thread - 3) WFLYSRV0009: Undeployed "module1.ear" (runtime-name: "module1.ear")  
> 09:11:31,495 INFO  [org.jboss.as.controller] (management-handler-thread - 3) WFLYCTL0183: Service status report  
> WFLYCTL0184:    New missing/unsatisfied dependencies:  
>       service jboss.deployment.unit."module1.ear".deploymentCompleteService (missing) dependents: [service jboss.deployment.unit."module2.ear".PARSE, service jboss.deployment.subunit."module2.ear"."ejb.jar".PARSE]   
>   
>   
> 09:11:31,558 INFO  [org.jboss.as.repository] (management-handler-thread - 1) WFLYDR0002: Content removed from location /opt/wildfly/standalone/data/content/69/baf0eeab47c006bc1f3d99b21b4355fac62d13/content  
> 09:11:43,170 INFO  [org.jboss.as.repository] (management-handler-thread - 1) WFLYDR0001: Content added at location /opt/wildfly/standalone/data/content/69/baf0eeab47c006bc1f3d99b21b4355fac62d13/content  
> 09:11:43,266 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "module1.ear" (runtime-name: "module1.ear")  
> 09:11:43,268 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0207: Starting subdeployment (runtime-name: "ejb.jar")  
> 09:11:43,273 INFO  [org.jboss.as.jpa] (MSC service thread 1-1) WFLYJPA0002: Read persistence.xml for module1-pu  
> 09:11:43,289 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0010: Starting Persistence Unit (phase 1 of 2) Service 'module1.ear/ejb.jar#module1-pu'  
> 09:11:43,289 INFO  [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 63) HHH000204: Processing PersistenceUnitInfo [  
>   name: module1-pu  
>   ...]  
> 09:11:43,292 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0010: Starting Persistence Unit (phase 2 of 2) Service 'module1.ear/ejb.jar#module1-pu'  
> 09:11:43,293 INFO  [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 63) HHH000400: Using dialect: org.hibernate.dialect.H2Dialect  
> 09:11:43,293 WARN  [org.hibernate.dialect.H2Dialect] (ServerService Thread Pool -- 63) HHH000431: Unable to determine H2 database version, certain features may not work  
> 09:11:43,294 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (ServerService Thread Pool -- 63) HHH000397: Using ASTQueryTranslatorFactory  
> 09:11:43,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0070: Deployment restart detected for deployment module2.ear, performing full redeploy instead.  
> 09:11:43,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0070: Deployment restart detected for deployment ejb.jar, performing full redeploy instead.  
> 09:11:43,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0208: Stopped subdeployment (runtime-name: ejb.jar) in 0ms  
> 09:11:43,297 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: Stopped deployment module2.ear (runtime-name: module2.ear) in 1ms  
> 09:11:43,298 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "module2.ear" (runtime-name: "module2.ear")  
> 09:11:43,299 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0207: Starting subdeployment (runtime-name: "ejb.jar")  
> 09:11:43,300 INFO  [org.jboss.as.jpa] (MSC service thread 1-2) WFLYJPA0002: Read persistence.xml for module2-pu  
> 09:11:43,307 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 63) WFLYJPA0010: Starting Persistence Unit (phase 1 of 2) Service 'module2.ear/ejb.jar#module2-pu'  
> 09:11:43,308 INFO  [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 63) HHH000204: Processing PersistenceUnitInfo [  
>   name: module2-pu  
>   ...]  
> 09:11:43,312 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.subunit."module2.ear"."ejb.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."module2.ear"."ejb.jar".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of subdeployment "ejb.jar" of deployment "module2.ear"  
>   at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163)  
>   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:745)  
> Caused by: java.lang.IllegalStateException: WFLYCTL0075: Duplicate resource module2.ear/ejb.jar#module2-pu  
>   at org.jboss.as.controller.registry.AbstractModelResource$DefaultResourceProvider.register(AbstractModelResource.java:248)  
>   at org.jboss.as.controller.registry.AbstractModelResource.registerChild(AbstractModelResource.java:143)  
>   at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.addManagementConsole(PersistenceUnitServiceHandler.java:1128)  
>   at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deployPersistenceUnitPhaseTwo(PersistenceUnitServiceHandler.java:704)  
>   at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.addPuService(PersistenceUnitServiceHandler.java:289)  
>   at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.handleJarDeployment(PersistenceUnitServiceHandler.java:162)  
>   at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deploy(PersistenceUnitServiceHandler.java:133)  
>   at org.jboss.as.jpa.processor.PersistenceCompleteInstallProcessor.deploy(PersistenceCompleteInstallProcessor.java:55)  
>   at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156)  
>   ... 5 more  
>   
>   
> 09:11:43,376 INFO  [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0010: Deployed "module1.ear" (runtime-name : "module1.ear")  
> 09:11:43,376 INFO  [org.jboss.as.controller] (management-handler-thread - 2) WFLYCTL0183: Service status report  
> WFLYCTL0184:    New missing/unsatisfied dependencies:  
>       service jboss.deployment.subunit."module2.ear"."ejb.jar" (unavailable) dependents: [service jboss.deployment.unit."module2.ear".PARSE]   
>       service jboss.deployment.subunit."module2.ear"."ejb.jar".STRUCTURE (unavailable) dependents: [service jboss.deployment.unit."module2.ear".PARSE]   
>       service jboss.deployment.subunit."module2.ear"."ejb.jar".deploymentCompleteService (missing) dependents: [service jboss.deployment.unit."module2.ear".deploymentCompleteService]   
> WFLYCTL0185:    Newly corrected services:  
>       service jboss.deployment.unit."module1.ear".deploymentCompleteService (new available)  
> WFLYCTL0186:   Services which failed to start:      service jboss.deployment.subunit."module2.ear"."ejb.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."module2.ear"."ejb.jar".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of subdeployment "ejb.jar" of deployment "module2.ear"  
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)



More information about the jboss-jira mailing list