Hi

Yes, the features service is caching the feature already installed (in
order to speedup startup, etc). If you change a feature (without
changing the version), then you have to clean the data folder.

Regards
JB

On Thu, Aug 11, 2022 at 11:55 AM Ephemeris Lappis
<[email protected]> wrote:
>
> Hello.
>
> Because I wanted to test my features on a clean, newly installed
> Karaf, I've cleaned up the cache, logs, tmp, and so on.
> And after that, the configuration file is now installed, and the
> configuration created, before my bundles are started, as expected as
> "prerequisite", such a way that my Camel routes are started when the
> bundles are installed.
>
> I had checked my features definition after refreshing the repo, using
> feature:info, and they seemed to be up to date, but their deployment
> plan was probably not, and repeated "feature:install" led again and
> again to failing routes...
>
> Is there some cached information about features that could make my
> changes useless until a full cleaning ?
>
> Thanks again for your help.
>
> Regards.
>
>
>
> Le mar. 9 août 2022 à 18:31, Jean-Baptiste Onofré <[email protected]> a écrit 
> :
> >
> > 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
> > <[email protected]> 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