[jboss-osgi-issues] [JBoss JIRA] (JBOSGI-800) On Redeploy of osgi bundle getting DuplicateServiceException: Service jboss.module.spec.service."deployment.basebundle-1.0.0.jar".main is already registered

Arcadiy Ivanov (JIRA) issues at jboss.org
Thu Nov 17 06:00:01 EST 2016


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

Arcadiy Ivanov commented on JBOSGI-800:
---------------------------------------

[~satish.bhor] Here's the authoritative word from OSGI 5 Spec (emphasis added):

The framework never eagerly disconnects the wires between Bundle Wirings, a disconnect happens
only under control of the management agent when the refreshBundles(Collection,
FrameworkListener...) *method is called or when all requiring bundles become uninstalled*. When a
bundle is updated, its existing BundleWiring objects will continue to serve classes and resources to
bundles that use it. The update, even though it provides a new revision, has no effect on resolved bundles
with respect to class loading. Also, the installation of a new bundle could allow new wires but
they must not affect the existing wiring until refreshBundles(Collection,FrameworkListener...) is
called (with the exception for dynamic imports). Though the class loading wires remain in place,
proper bundles should react to the changes in the dynamic state. That is, when a bundle is updated it
will be stopped, allowing others to remove any references they have to that bundle. However, even in
those cases the wirings will remain until the bundle is unresolved during a refresh cycle.

Since it does not seem possible to install a new revision of the deployment +base+ into WildFly while the wirings from the old +base+ exist, you have to stop dependent first and then redeploy the +base+, per OSGi. The forceful stop of +dependent+ when you undeploy +base+ would be contrary to spec.

> On Redeploy of osgi bundle getting DuplicateServiceException: Service jboss.module.spec.service."deployment.basebundle-1.0.0.jar".main is already registered
> ------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBOSGI-800
>                 URL: https://issues.jboss.org/browse/JBOSGI-800
>             Project: JBoss OSGi
>          Issue Type: Bug
>         Environment: JBOSSOSGI  2.5.2.Final, apache felix as dependency manager,Wildfly-10.1.0.Final with openjdk 1.8 on ubuntu 16.04
>            Reporter: satish bhor
>            Assignee: Arcadiy Ivanov
>             Fix For: JBossOSGI 2.5.3
>
>         Attachments: OSGI.zip
>
>
> There are two osgi bundles base bundle and dependent bundle. When I  undeploy base bundle it works fine without any error but when I tried it redeploy application it throwing below error.
> 12:48:48,807 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit."basebundle-1.0.0.jar".CONFIGURE_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."basebundle-1.0.0.jar".CONFIGURE_MODULE: WFLYSRV0153: Failed to process phase CONFIGURE_MODULE of deployment "basebundle-1.0.0.jar"
> 	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154) [wildfly-server-2.2.0.Final.jar:2.2.0.Final]
> 	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_91]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_91]
> 	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_91]
> Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.module.spec.service."deployment.basebundle-1.0.0.jar".main is already registered
> 	at org.jboss.msc.service.ServiceRegistrationImpl.setInstance(ServiceRegistrationImpl.java:158) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.msc.service.ServiceControllerImpl.startInstallation(ServiceControllerImpl.java:235) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.msc.service.ServiceContainerImpl.install(ServiceContainerImpl.java:768) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.msc.service.ServiceTargetImpl.install(ServiceTargetImpl.java:223) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.msc.service.ServiceControllerImpl$ChildServiceTarget.install(ServiceControllerImpl.java:2401) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.msc.service.ServiceBuilderImpl.install(ServiceBuilderImpl.java:317) [jboss-msc-1.2.6.Final.jar:1.2.6.Final]
> 	at org.jboss.as.osgi.service.ModuleLoaderIntegration$FrameworkModuleLoaderImpl.addModuleSpec(ModuleLoaderIntegration.java:208)
> 	at org.jboss.osgi.framework.internal.ModuleManagerImpl.createHostModule(ModuleManagerImpl.java:325)
> 	at org.jboss.osgi.framework.internal.ModuleManagerImpl.addModule(ModuleManagerImpl.java:207)
> 	at org.jboss.osgi.framework.internal.FrameworkResolverImpl.addModules(FrameworkResolverImpl.java:304)
> 	at org.jboss.osgi.framework.internal.FrameworkResolverImpl.applyResolverResults(FrameworkResolverImpl.java:249)
> 	at org.jboss.osgi.framework.internal.FrameworkResolverImpl.resolveInternal(FrameworkResolverImpl.java:164)
> 	at org.jboss.osgi.framework.internal.FrameworkResolverImpl.resolveAndApply(FrameworkResolverImpl.java:109)
> 	at org.jboss.as.osgi.deployment.BundleResolveProcessor.resolveBundle(BundleResolveProcessor.java:81)
> 	at org.jboss.as.osgi.deployment.BundleResolveProcessor.deploy(BundleResolveProcessor.java:68)
> 	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147) [wildfly-server-2.2.0.Final.jar:2.2.0.Final]
> 	... 5 more
> 12:48:48,841 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 9) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "basebundle-1.0.0.jar")]) - failure description: {
>     "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"basebundle-1.0.0.jar\".CONFIGURE_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"basebundle-1.0.0.jar\".CONFIGURE_MODULE: WFLYSRV0153: Failed to process phase CONFIGURE_MODULE of deployment \"basebundle-1.0.0.jar\"
>     Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.module.spec.service.\"deployment.basebundle-1.0.0.jar\".main is already registered"},
>     "WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.unit.\"basebundle-1.0.0.jar\".CONFIGURE_MODULE"],
>     "WFLYCTL0180: Services with missing/unavailable dependencies" => undefined
> }
> 12:48:48,842 ERROR [org.jboss.as.server] (management-handler-thread - 9) WFLYSRV0021: Deploy of deployment "basebundle-1.0.0.jar" was rolled back with the following failure message: 
> {
>     "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"basebundle-1.0.0.jar\".CONFIGURE_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"basebundle-1.0.0.jar\".CONFIGURE_MODULE: WFLYSRV0153: Failed to process phase CONFIGURE_MODULE of deployment \"basebundle-1.0.0.jar\"
>     Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.module.spec.service.\"deployment.basebundle-1.0.0.jar\".main is already registered"},
>     "WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.unit.\"basebundle-1.0.0.jar\".CONFIGURE_MODULE"],
>  



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-osgi-issues mailing list