Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-21484

DefaultPropertiesLookup loads all props from microprofile config per property value lookup

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 4.8.1
    • 4.10.0
    • None
    • Unknown

    Description

      While using quarkus to run camel route, all microprofile properties are loaded per lookup of a property value. So when using a modest number of 10 config values in camel routes, the current lookup loads all properties (including environment and system variables) 11 times.

      This happens in the method DefaultPropertiesLookup#
      doLookup(String name, String defaultValue). When a property is found (answer != null), then the source is determined: for the CamelMicroProfilePropertiesSource, the routine performs the loadProperties() function (in the block "ps instanceof LoadablePropertiesSource") to retrieve the "source" string for the retrieved value. This is set when "
      prop instanceof OrderedLocationProperties". For this CamelMicroProfilePropertiesSource, this prop is not an instanceof OrderedLocationProperties, and so the result of the loadProperties call is never used and hence should be avoided.
      This can be illustrated with the following setup with 3 mymsg properties:

      route.yaml:

      - from:
          uri: "timer:myyaml"
          steps:
            - log:
                message: 'Message {{mymsg mymsg2:msg2 mymsg3:msg3 mymsg4:msg4'}}

       

      application.properties:

      quarkus.config.log.values=true
      quarkus.log.level=info
      quarkus.log.category."org.apache.camel.main".level=DEBUG
      quarkus.log.category."org.apache.camel.component.properties".level=DEBUG
      quarkus.log.category."io.smallrye.config".level=DEBUG
      camel.main.routes-include-pattern=camel/route.yaml
      mymsg=test1
      mymsg2=test2
      mymsg3=test3

       

      -> % quarkus run -B | grep mymsg
      2024-11-28 10:22:58,942 DEBUG [org.apa.cam.mai.RoutesConfigurer] (main) Adding templated routes into CamelContext from RoutesBuilder: Routes: [Route[From[timer:myyaml] -> [Log[Message \{{mymsg}} \{{mymsg2:msg2}} \{{mymsg3:msg3}} \{{mymsg4:msg4}}]]]]
      2024-11-28 10:22:58,958 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
      2024-11-28 10:22:58,960 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
      2024-11-28 10:22:58,960 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
      2024-11-28 10:22:58,960 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
      2024-11-28 10:22:58,966 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Found property: mymsg with value: test1 to be used.
      2024-11-28 10:22:58,966 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
      2024-11-28 10:22:58,966 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
      2024-11-28 10:22:58,967 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
      2024-11-28 10:22:58,967 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
      2024-11-28 10:22:58,972 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Found property: mymsg2 with value: test2 to be used.
      2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
      2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
      2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
      2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
      2024-11-28 10:22:58,978 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Found property: mymsg3 with value: test3 to be used.
      2024-11-28 10:22:58,978 DEBUG [io.sma.config] (main) SRCFG01002: The config mymsg4 was not found
      2024-11-28 10:22:58,978 DEBUG [io.sma.config] (main) SRCFG01002: The config mymsg4 was not found
      2024-11-28 10:22:58,978 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Property with key [mymsg4] not found, using default value: msg4
      2024-11-28 10:22:58,990 INFO  [org.apa.cam.mai.BaseMainSupport] (main)     [MicroProfilePropertiesSource] mymsg = test1
      2024-11-28 10:22:58,990 INFO  [org.apa.cam.mai.BaseMainSupport] (main)     [MicroProfilePropertiesSource] mymsg2 = test2
      2024-11-28 10:22:58,990 INFO  [org.apa.cam.mai.BaseMainSupport] (main)     [MicroProfilePropertiesSource] mymsg3 = test3

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            paul@search-solutions.net Paul Blanchaert
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: