[BUILD-1032] Can not install 3.1.x soft-locking module in DX Core bundle Created: 13/Dec/22  Updated: 11/Apr/23  Resolved: 29/Mar/23

Status: Closed
Project: Build
Component/s: BOM
Affects Version/s: BOM 6.2.9
Fix Version/s: BOM 6.2.31

Type: Bug Priority: Neutral
Reporter: Viet Nguyen Assignee: Miguel Martinez
Resolution: Fixed Votes: 0
Labels: softlocking
Remaining Estimate: Not Specified
Time Spent: 1d 2.5h
Original Estimate: Not Specified

Issue Links:
Relates
relates to MGNLSLOCK-68 Soft locking 3.1 should depend on pag... Closed
relation
is related to BUILD-1045 Soft locking compatibility should be ... Closed
Template:
Acceptance criteria:
Empty
Date of First Response:
Visible to:
Thomas Duffey
Epic Link: AuthorX Support
Story Points: 2
Team: AuthorX
Work Started:

 Description   

Reproduce

  1.  Follow soft-locking module documentation to install the module.
  2.  Start up Magnolia, error would show in the log
    2023-03-15 06:01:13,483 ERROR .objectfactory.guice.GuiceComponentProviderBuilder: Magnolia failed to load module configuration with types 
    ...
    ...
    ...
    1) Error injecting constructor, java.lang.IllegalStateException: Duplicate key info.magnolia.module.softlocking.SoftLockingModule (attempted merging values soft-locking and soft-locking-core)
      at info.magnolia.config.module.ModuleMap2BeanTransformer.<init>(ModuleMap2BeanTransformer.java:87)
      while locating info.magnolia.config.module.ModuleMap2BeanTransformer
        for the 7th parameter of info.magnolia.config.module.ModuleConfigurationSourceFactory.<init>(ModuleConfigurationSourceFactory.java:63)
      while locating info.magnolia.config.module.ModuleConfigurationSourceFactory
        for the 3rd parameter of info.magnolia.config.module.ModuleConfigurationRegistry.<init>(ModuleConfigurationRegistry.java:77)
      at info.magnolia.objectfactory.guice.GuiceComponentConfigurationModule.bindImplementation(GuiceComponentConfigurationModule.java:160) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> info.magnolia.objectfactory.guice.GuiceComponentProviderBuilder$1 -> info.magnolia.objectfactory.guice.GuiceComponentConfigurationModule)
      while locating info.magnolia.config.module.ModuleConfigurationRegistry
      while locating info.magnolia.config.registry.Registry annotated with @com.google.inject.internal.Element(setName=,uniqueId=52, type=MULTIBINDER, keyType=)
    Caused by: java.lang.IllegalStateException: Duplicate key info.magnolia.module.softlocking.SoftLockingModule (attempted merging values soft-locking and soft-locking-core)
    	at java.base/java.util.stream.Collectors.duplicateKeyException(Collectors.java:133)
    	at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180)
    	at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
    	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    	at info.magnolia.config.module.ModuleMap2BeanTransformer.<init>(ModuleMap2BeanTransformer.java:92)
    	at info.magnolia.config.module.ModuleMap2BeanTransformer$$FastClassByGuice$$34922d13.newInstance(<generated>)
    	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
    	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
    	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
    	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    	at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:42)
    	at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:65)
    	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:113)
    	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
    	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    	at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:42)
    	at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:65)
    	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:113)
    	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
    	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:168)
    	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39)
    	at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:62)
    	at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213)
    	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
    	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:111)
    	at com.google.inject.Guice.createInjector(Guice.java:87)
    	at com.google.inject.Guice.createInjector(Guice.java:78)
    	at info.magnolia.objectfactory.guice.GuiceComponentProviderBuilder.build(GuiceComponentProviderBuilder.java:148)
    	at info.magnolia.objectfactory.guice.GuiceComponentProviderBuilder.build(GuiceComponentProviderBuilder.java:195)
    	at info.magnolia.cms.beans.config.ConfigLoader.load(ConfigLoader.java:142)
    	at info.magnolia.init.MagnoliaServletContextListener$1.doExec(MagnoliaServletContextListener.java:259)
    	at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:407)
    	at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:404)
    	at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:378)
    	at info.magnolia.init.MagnoliaServletContextListener.startServer(MagnoliaServletContextListener.java:256)
    	at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:182)
    	at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:128)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    	at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
    	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
    

Expected
I would expect to be able to install both modules simultaneously.

Actual
When installed together a conflict is created.

Workaround

  • Exclude previous version which included in the bundle, then add a new one, like below:
      <dependencies>
        <dependency>
          <groupId>info.magnolia.dx</groupId>
          <artifactId>magnolia-dx-core-demo-webapp</artifactId>
          <type>pom</type>
          <exclusions>
            <exclusion>
              <groupId>info.magnolia</groupId>
              <artifactId>magnolia-module-soft-locking</artifactId>
            </exclusion>
            ....
          </exclusions>
        </dependency>
        
        <dependency>
          <groupId>info.magnolia.soft-locking</groupId>
          <artifactId>magnolia-soft-locking</artifactId>
          <version>3.1.2</version>
        </dependency>
        ....
    
      </dependencies>
    
    

Notes

  • We have changed the module structure which leads to duplication of the same configured bean Caused by: java.lang.IllegalStateException: Duplicate key info.magnolia.module.softlocking.SoftLockingModule (attempted merging values soft-locking and soft-locking-core)
  • Need to update the bundle POM/BOM to include newer version and remove the old one.

 

Dev notes


Generated at Sun Feb 11 23:47:31 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.