[
https://issues.apache.org/jira/browse/CAMEL-16438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17371992#comment-17371992
]
David Oftedal edited comment on CAMEL-16438 at 6/30/21, 1:10 PM:
-----------------------------------------------------------------
Davs [~davsclaus]
For anyone who might be wondering in the future, we found the reason for this
unreproducible issue today:
Through many layers of abstractions and enterprise tech, some unused
configuration properties from older versions of camel were still present in the
runtime of the project, despite being found nowhere in the source or
configuration files.
Thus, the project would start up, and find a few properties of the kind:
"camel.component.kafka.configuration..."
This apparently caused Camel, even Camel 3.10, to attempt to parse the
.configuration section, which would fail, as we had moved to Camel 3.8 (now
3.10) and no longer used it. It especially complained about the missing Kafka
broker URL, which was now specified in the new and correct location, and
skipped over.
I suppose if one wanted to be maximally backward compatible, one would have to
first attempt to parse the .configuration section for compatibility, and then
overwrite that with any property found outside the .configuration section, or
something like that.
Either way, removing any mention of those older properties from property files,
environment variables *and* the runtime environment does fix the issue.
was (Author: davidoftedal):
Davs [~davsclaus]
For anyone who might be wondering in the future, we found the reason for this
unreproducible issue today:
Through many layers of abstractions and enterprise tech, some unused
configuration properties from older versions of camel were still present in the
runtime of the project, despite being found nowhere in the source or
configuration files.
Thus, the project would start up, and find a few properties of the kind:
"camel.component.kafka.configuration..."
This apparently caused Camel, even Camel 3.10, to attempt to parse the
.configuration section, which would fail, as we had moved to Camel 3.8 (now
3.10) and no longer used it.
I suppose if one wanted to be maximally backward compatible, one would have to
first attempt to parse the .configuration section for compatibility, and then
overwrite that with any property found outside the .configuration section, or
something like that.
Either way, removing any mention of those older properties from property files,
environment variables *and* the runtime environment does fix the issue.
> Kafka component properties randomly end up under camel.component.kafka or
> camel.component.kafka.configuration
> -------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-16438
> URL: https://issues.apache.org/jira/browse/CAMEL-16438
> Project: Camel
> Issue Type: Bug
> Components: camel-kafka, camel-spring-boot
> Affects Versions: 3.8.0, 3.9.0
> Reporter: David Oftedal
> Priority: Minor
> Fix For: 3.10.0
>
> Attachments: kafka-chaos.zip
>
>
> According to
> [https://camel.apache.org/manual/latest/camel-3x-upgrade-guide-3_2.html#_configuring_components_via_spring_boot_auto_configuration]
> , Camel component configuration should as of version 3.2 no longer use the
> .configuration prefix.
> In version 3.8.0, many properties have indeed moved out of .configuration.
> But some properties are still only set if set with the .configuration prefix.
> The same seems to be the case in 3.9.0 as well.
> As far as I can tell, this non-exhaustive list contains valid examples:
> * camel.component.kafka.configuration.brokers (specifically mentioned in the
> documentation as having moved)
> * camel.component.kafka.configuration.max-poll-records
> * camel.component.kafka.configuration.group-id
> * camel.component.kafka.configuration.topic
> * camel.component.kafka.configuration.ssl-keystore-password
> * camel.component.kafka.configuration.ssl-truststore-password
> * camel.component.kafka.configuration.value-deserializer
> Some properties seem to have moved *to* .configuration:
> * camel.component.kafka.configuration.allow-manual-commit
> * camel.component.kafka.configuration.break-on-first-error
> Some related properties now appear to be split between two prefixes:
> * camel.component.kafka.ssl-keystore-location and
> camel.component.kafka.configuration.ssl-keystore-password
> * camel.component.kafka.ssl-truststore-location and
> camel.component.kafka.configuration.ssl-truststore-password
> * camel.component.kafka.value-serializer and
> camel.component.kafka.configuration.value-deserializer
> Trying to figure out what goes where requires a pretty exhaustive and
> error-prone search.
> Obviously it's possible to copy and paste each property so that it's set
> both with and without .configuration, but if the intent is to remove
> .configuration altogether, would it be possible to either confirm or negate
> what we're seeing?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)