Details
-
Bug
-
Resolution: Not a Bug
-
Major
-
None
-
jboss-fuse-6.3, fuse-6.x-GA
-
None
-
%
-
-
-
Description
When restarting fabric (v1) containers with profiles containing spring contexts with externalized properties, the context often fails to initialize with a failure to resolve a property placeholder. It often takes several restarts or removal and replacement of the same profile for the container to correctly initialize.
2019-06-22 15:46:52,929 | ERROR | AMQ-1-thread-1 | ActiveMQServiceFactory | 221 - io.fabric8.mq.mq-fabric - 1.2.0.redhat-630377 | Exception on start: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'org.apache.activemq.xbean.XBeanBrokerService#0' defined in URL [profile:sync-broker.xml]: Could not resolve placeholder 'broker.network.connector.1.name' in string value "${broker.network.connector.1.name}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'broker.network.connector.1.name' in string value "${broker.network.connector.1.name}" org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'org.apache.activemq.xbean.XBeanBrokerService#0' defined in URL [profile:sync-broker.xml]: Could not resolve placeholder 'broker.network.connector.1.name' in string value "${broker.network.connector.1.name}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'broker.network.connector.1.name' in string value "${broker.network.connector.1.name}" at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:209)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:222)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:84)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:703)[237:org.apache.servicemix.bundles.spring-context:3.2.18.RELEASE_1] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678)[237:org.apache.servicemix.bundles.spring-context:3.2.18.RELEASE_1] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)[237:org.apache.servicemix.bundles.spring-context:3.2.18.RELEASE_1] at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)[245:org.apache.xbean.spring:3.18.0] at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)[245:org.apache.xbean.spring:3.18.0] at io.fabric8.mq.fabric.ActiveMQServiceFactory$1.<init>(ActiveMQServiceFactory.java:164)[221:io.fabric8.mq.mq-fabric:1.2.0.redhat-630377] at io.fabric8.mq.fabric.ActiveMQServiceFactory.createBroker(ActiveMQServiceFactory.java:164)[221:io.fabric8.mq.mq-fabric:1.2.0.redhat-630377] at io.fabric8.mq.fabric.ActiveMQServiceFactory$ClusteredConfiguration.doStart(ActiveMQServiceFactory.java:544)[221:io.fabric8.mq.mq-fabric:1.2.0.redhat-630377] at io.fabric8.mq.fabric.ActiveMQServiceFactory$ClusteredConfiguration.access$600(ActiveMQServiceFactory.java:359)[221:io.fabric8.mq.mq-fabric:1.2.0.redhat-630377] at io.fabric8.mq.fabric.ActiveMQServiceFactory$ClusteredConfiguration$1.run(ActiveMQServiceFactory.java:499)[221:io.fabric8.mq.mq-fabric:1.2.0.redhat-630377] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_201] at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_201] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[:1.8.0_201] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[:1.8.0_201] at java.lang.Thread.run(Thread.java:748)[:1.8.0_201] Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'broker.network.connector.1.name' in string value "${broker.network.connector.1.name}" at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:173)[239:org.apache.servicemix.bundles.spring-core:3.2.18.RELEASE_1] at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:125)[239:org.apache.servicemix.bundles.spring-core:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer$PlaceholderResolvingStringValueResolver.resolveStringValue(PropertyPlaceholderConfigurer.java:257)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveStringValue(BeanDefinitionVisitor.java:282)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:209)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitPropertyValues(BeanDefinitionVisitor.java:141)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitBeanDefinition(BeanDefinitionVisitor.java:82)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:172)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitList(BeanDefinitionVisitor.java:228)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:192)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitPropertyValues(BeanDefinitionVisitor.java:141)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitBeanDefinition(BeanDefinitionVisitor.java:82)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:206)[236:org.apache.servicemix.bundles.spring-beans:3.2.18.RELEASE_1] ... 17 more
This reproduces with a fairly common use case of mq profiles with an inheritance hierarchy where the assigned profiles derive from a common parent containing the broker XML configuration. After assigning these profiles to containers the containers intermittently fail to initialize on restart and may take several attempts to start correctly, or may only initialize correctly after removing the mq profile and reinstalling it.