Hi,

It's not a bug for two reasons:

1. If you absolutely need the config first, you can define a feature
with the configuration and use prerequisite=true
2. Generally speaking a bundle should be able to deal with
configuration update (basically a ManagedService instead of retrieving
config service directly)

Regards
JB

On Tue, Aug 9, 2022 at 3:54 PM Ephemeris Lappis
<ephemeris.lap...@gmail.com> wrote:
>
> Hello.
>
> It seems that bundles that come from an installed feature are started
> before the configuration file is installed.y
>
> My feature example XML :
> <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0";
> name="my-test-26-karaf-2-routes">
>     <feature name="my-test-26-karaf-2-routes" description="karaf-test
> :: Camel" version="0.0.1.SNAPSHOT">
>         <details>karaf-test :: Camel routes</details>
>         <configfile
> finalname="/etc/my_test_26_karaf_2_routes.cfg">mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT/cfg/configuration</configfile>
>         <feature version="2.25.4">camel-csv</feature>
>         <bundle>mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT</bundle>
>         <bundle>mvn:my.tests/my-test-26-karaf-1-api/0.0.1-SNAPSHOT</bundle>
>     </feature>
> </features>
>
> When I install the feature using : repo-add -i
> mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT/XML/features
>
> My camel bundle fails because it starts before the configuration file
> is not installed yet. See the logs :
> 2022-08-09T15:47:08,903 | INFO  | pipe-repo-add -i
> mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT/XML/features |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 | Adding features:
> my-test-26-karaf-2-routes/[0.0.1.SNAPSHOT,0.0.1.SNAPSHOT]
> 2022-08-09T15:47:09,005 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 | Changes to perform:
> 2022-08-09T15:47:09,005 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   Region: root
> 2022-08-09T15:47:09,007 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |     Bundles to install:
> 2022-08-09T15:47:09,010 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |       mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT
> 2022-08-09T15:47:09,010 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |       mvn:org.apache.camel/camel-csv/2.25.4
> 2022-08-09T15:47:09,010 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |       mvn:org.apache.commons/commons-csv/1.6
> 2022-08-09T15:47:09,012 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 | Installing bundles:
> 2022-08-09T15:47:09,013 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT
> 2022-08-09T15:47:09,023 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   mvn:org.apache.camel/camel-csv/2.25.4
> 2022-08-09T15:47:09,136 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   mvn:org.apache.commons/commons-csv/1.6
> 2022-08-09T15:47:09,249 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 | Creating configuration file
> C:\_F_\Programs\Java\Apache\apache-karaf-4.4.1\/etc/my_test_26_karaf_2_routes.cfg
> 2022-08-09T15:47:09,263 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 | Starting bundles:
> 2022-08-09T15:47:09,264 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   org.apache.commons.csv/1.6.0
> 2022-08-09T15:47:09,267 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   org.apache.camel.camel-csv/2.25.4
> 2022-08-09T15:47:09,271 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 |   my-test-26-karaf-2-routes/0.0.1.SNAPSHOT
> 2022-08-09T15:47:09,310 | WARN  | features-3-thread-1 | BeanRecipe
>                   | 89 - org.apache.aries.blueprint.core - 1.10.3 |
> Object to be destroyed is not an instance of UnwrapperedBeanHolder,
> type: null
> 2022-08-09T15:47:09,312 | ERROR | features-3-thread-1 |
> BlueprintContainerImpl           | 89 -
> org.apache.aries.blueprint.core - 1.10.3 | Unable to start container
> for blueprint bundle my-test-26-karaf-2-routes/0.0.1.SNAPSHOT
> org.osgi.service.blueprint.container.ComponentDefinitionException:
> Unable to initialize bean .camelBlueprint.factory.K1-Test
> at 
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:593)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:703)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666)
> ~[?:?]
> at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81)
> ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_242]
> at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:338)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:152)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintContainerImpl.getComponentInstance(BlueprintContainerImpl.java:809)
> ~[?:?]
> at 
> org.apache.camel.blueprint.handler.CamelNamespaceHandler$CamelDependenciesFinder.process(CamelNamespaceHandler.java:1014)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:573)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:417)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:298)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:335)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:288)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:284)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:274)
> ~[?:?]
> at 
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
> ~[?:?]
> at 
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
> ~[?:?]
> at 
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
> ~[?:?]
> at 
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
> ~[?:?]
> at 
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
> ~[?:?]
> at 
> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1384)
> ~[?:?]
> at 
> org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730)
> ~[?:?]
> at 
> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485)
> ~[?:?]
> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4847) ~[?:?]
> at org.apache.felix.framework.Felix.startBundle(Felix.java:2363) ~[?:?]
> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1006) ~[?:?]
> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:992) ~[?:?]
> at 
> org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165)
> ~[?:?]
> at 
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1160)
> ~[?:?]
> at 
> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1041)
> ~[?:?]
> at 
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069)
> ~[?:?]
> at 
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004)
> ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_242]
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> ~[?:1.8.0_242]
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> ~[?:1.8.0_242]
> at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_242]
> Caused by: org.apache.camel.RuntimeCamelException:
> java.lang.IllegalArgumentException: Property with key
> [my.input-folder] not found in properties from text:
> file://{{my.input-folder}}
> at 
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1826)
> ~[?:?]
> at 
> org.apache.camel.model.RouteDefinitionHelper.initRouteInputs(RouteDefinitionHelper.java:457)
> ~[?:?]
> at 
> org.apache.camel.model.RouteDefinitionHelper.prepareRouteImp(RouteDefinitionHelper.java:373)
> ~[?:?]
> at 
> org.apache.camel.model.RouteDefinitionHelper.prepareRoute(RouteDefinitionHelper.java:345)
> ~[?:?]
> at 
> org.apache.camel.core.xml.AbstractCamelContextFactoryBean.prepareRoutes(AbstractCamelContextFactoryBean.java:508)
> ~[?:?]
> at 
> org.apache.camel.core.xml.AbstractCamelContextFactoryBean.setupRoutes(AbstractCamelContextFactoryBean.java:482)
> ~[?:?]
> at 
> org.apache.camel.blueprint.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:355)
> ~[?:?]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_242]
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:1.8.0_242]
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_242]
> at 
> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:337)
> ~[?:?]
> at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:835)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:591)
> ~[?:?]
> ... 38 more
> Caused by: java.lang.IllegalArgumentException: Property with key
> [my.input-folder] not found in properties from text:
> file://{{my.input-folder}}
> at 
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.getPropertyValue(DefaultPropertiesParser.java:271)
> ~[?:?]
> at 
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.readProperty(DefaultPropertiesParser.java:157)
> ~[?:?]
> at 
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.doParse(DefaultPropertiesParser.java:116)
> ~[?:?]
> at 
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.parse(DefaultPropertiesParser.java:100)
> ~[?:?]
> at 
> org.apache.camel.component.properties.DefaultPropertiesParser.parseUri(DefaultPropertiesParser.java:63)
> ~[?:?]
> at 
> org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:235)
> ~[?:?]
> at 
> org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:178)
> ~[?:?]
> at 
> org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:2546)
> ~[?:?]
> at 
> org.apache.camel.model.ProcessorDefinitionHelper.resolvePropertyPlaceholders(ProcessorDefinitionHelper.java:737)
> ~[?:?]
> at 
> org.apache.camel.model.RouteDefinitionHelper.initRouteInputs(RouteDefinitionHelper.java:455)
> ~[?:?]
> at 
> org.apache.camel.model.RouteDefinitionHelper.prepareRouteImp(RouteDefinitionHelper.java:373)
> ~[?:?]
> at 
> org.apache.camel.model.RouteDefinitionHelper.prepareRoute(RouteDefinitionHelper.java:345)
> ~[?:?]
> at 
> org.apache.camel.core.xml.AbstractCamelContextFactoryBean.prepareRoutes(AbstractCamelContextFactoryBean.java:508)
> ~[?:?]
> at 
> org.apache.camel.core.xml.AbstractCamelContextFactoryBean.setupRoutes(AbstractCamelContextFactoryBean.java:482)
> ~[?:?]
> at 
> org.apache.camel.blueprint.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:355)
> ~[?:?]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_242]
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:1.8.0_242]
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_242]
> at 
> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:337)
> ~[?:?]
> at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:835)
> ~[?:?]
> at 
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:591)
> ~[?:?]
> ... 38 more
> 2022-08-09T15:47:09,351 | INFO  | features-3-thread-1 |
> FeaturesServiceImpl              | 18 - org.apache.karaf.features.core
> - 4.4.1 | Done.
> 2022-08-09T15:47:10,744 | INFO  |
> fileinstall-C:\_F_\Programs\Java\Apache\apache-karaf-4.4.1\etc |
> fileinstall                      | 17 - org.apache.felix.fileinstall -
> 3.7.4 | Creating configuration {my_test_26_karaf_2_routes} from
> C:\_F_\Programs\Java\Apache\apache-karaf-4.4.1\etc\my_test_26_karaf_2_routes.cfg
>
> Is it a bug ?
> If this is not a bug, how can we set the configuration file such a way
> it's installed before the bundles start ?
>
> Thanks for your help.
>
> Regards.

Reply via email to