[ 
https://issues.apache.org/jira/browse/CAMEL-15840?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Otavio Rodolfo Piske updated CAMEL-15840:
-----------------------------------------
    Description: 
Camel is keeping 2 different instances of the configuration object for the AWS 
2 SNS component. Subsequently, changes to the object instances cause both of 
them to be out of sync leading to undefined behavior depending on each copy is 
read.

The problem flow is:
 # A copy of the configuration object if created when instantiating the 
endpoint: 
[https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L57|https://github.com/apache/camel/blob/master/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L57]
 # The copy object is then set with additional configuration values, such as 
the topic and topicArn: 
[https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L63-L66|https://github.com/apache/camel/blob/master/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L63-L66]
 # Then, when trying to set the component properties, the configuration object 
will be overwritten and the changes on step 2 may be lost: 
[https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L69]

 

Under some circumstances, such as when using a custom configuration object this 
causes the code to overwrite the object.

Here's a code snippet of the debug of the content of the parameters Map, used 
by setProperties to setup the endpoint. The introspection will eventually 
overwrite the configuration object.

 
{code:java}
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
accessKey, Value: accesskey
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
configuration, Value: 
#class:org.apache.camel.kafkaconnector.aws.v2.sns.sink.TestSnsConfiguration
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
queueUrl, Value: http://localhost:35886/000000000000/ckcsns-608
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: region, 
Value: us-east-1
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
secretKey, Value: secretkey
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
subscribeSNStoSQS, Value: true
{code}
 

 

 

 

 

 

 

 

 

  was:
Camel is keeping 2 different instances of the configuration object for the AWS 
2 component. Subsequently, changes to the object instances cause both of them 
to be out of sync leading to undefined behavior depending on each copy is read.

The problem flow is:
 # A copy of the configuration object if created when instantiating the 
endpoint: 
[https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L57|https://github.com/apache/camel/blob/master/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L57]
 # The copy object is then set with additional configuration values, such as 
the topic and topicArn: 
[https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L63-L66|https://github.com/apache/camel/blob/master/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L63-L66]
 # Then, when trying to set the component properties, the configuration object 
will be overwritten and the changes on step 2 may be lost: 
[https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L69]

 

Under some circumstances, such as when using a custom configuration object this 
causes the code to overwrite the object.

Here's a code snippet of the debug of the content of the parameters Map, used 
by setProperties to setup the endpoint. The introspection will eventually 
overwrite the configuration object.

 
{code:java}
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
accessKey, Value: accesskey
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
configuration, Value: 
#class:org.apache.camel.kafkaconnector.aws.v2.sns.sink.TestSnsConfiguration
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
queueUrl, Value: http://localhost:35886/000000000000/ckcsns-608
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: region, 
Value: us-east-1
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
secretKey, Value: secretkey
2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
subscribeSNStoSQS, Value: true
{code}
 

 

 

 

 

 

 

 

 


> camel-aws2-sns: duplicate copies of configuration objects lead to undefined 
> behavior
> ------------------------------------------------------------------------------------
>
>                 Key: CAMEL-15840
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15840
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-aws2
>    Affects Versions: 3.7.0
>            Reporter: Otavio Rodolfo Piske
>            Priority: Major
>
> Camel is keeping 2 different instances of the configuration object for the 
> AWS 2 SNS component. Subsequently, changes to the object instances cause both 
> of them to be out of sync leading to undefined behavior depending on each 
> copy is read.
> The problem flow is:
>  # A copy of the configuration object if created when instantiating the 
> endpoint: 
> [https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L57|https://github.com/apache/camel/blob/master/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L57]
>  # The copy object is then set with additional configuration values, such as 
> the topic and topicArn: 
> [https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L63-L66|https://github.com/apache/camel/blob/master/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L63-L66]
>  # Then, when trying to set the component properties, the configuration 
> object will be overwritten and the changes on step 2 may be lost: 
> [https://github.com/apache/camel/blob/46945de816123cc894846a7e5cfe145f39e76f95/components/camel-aws2-sns/src/main/java/org/apache/camel/component/aws2/sns/Sns2Component.java#L69]
>  
> Under some circumstances, such as when using a custom configuration object 
> this causes the code to overwrite the object.
> Here's a code snippet of the debug of the content of the parameters Map, used 
> by setProperties to setup the endpoint. The introspection will eventually 
> overwrite the configuration object.
>  
> {code:java}
> 2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
> org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
> accessKey, Value: accesskey
> 2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
> org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
> configuration, Value: 
> #class:org.apache.camel.kafkaconnector.aws.v2.sns.sink.TestSnsConfiguration
> 2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
> org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
> queueUrl, Value: http://localhost:35886/000000000000/ckcsns-608
> 2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
> org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
> region, Value: us-east-1
> 2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
> org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
> secretKey, Value: secretkey
> 2020-11-10 13:52:33,853 [nectorWithUrl-0] DEBUG 
> org.apache.camel.component.aws2.sns.Sns2Component - Parameters -- Key: 
> subscribeSNStoSQS, Value: true
> {code}
>  
>  
>  
>  
>  
>  
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to