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

Work on CAMEL-26776 started by Andrea Cosentino.
------------------------------------------------
> camel-support: Ensure KeyValueRepository instances isolate namespaces across 
> components and patterns
> ----------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26776
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26776
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 4.24.0
>
>
> h3. Current behaviour
> When multiple components and EIP patterns (such as {{camel-state-store}}, the 
> {{Cache}} EIP, {{KeyValueIdempotentRepository}}, and 
> {{KeyValueAggregationRepository}}) share a single {{KeyValueRepository}} 
> backend, keys from {{state-store}} and {{Cache}} EIP interact directly with 
> the root key-value store without namespace isolation.
> Additionally, operations such as {{clear()}} and {{keys()}} on 
> {{state-store}} operate across the entire underlying repository rather than 
> being scoped to the specific store instance.
> In {{KeyValueAggregationRepository}}, stored values are cast directly to 
> {{DefaultExchangeHolder}} during retrieval without verifying object type.
> h3. Expected behaviour
> Each component, named store, and pattern should operate within its own 
> isolated namespace on the underlying {{KeyValueRepository}}.
> Operations like {{clear()}}, {{keys()}}, and {{size()}} should be strictly 
> scoped to their respective namespace so that entries belonging to one pattern 
> or store do not conflict with or affect another. Furthermore, 
> {{KeyValueAggregationRepository}} should safely verify object type before 
> unmarshalling stored entries.
> h3. Change
> * Introduce a {{NamespacedKeyValueRepository}} adapter in {{camel-support}} 
> that delegates to an underlying repository while scoping all key-value 
> operations ({{get}}, {{put}}, {{delete}}, {{contains}}, {{keys}}, {{clear}}) 
> to a specified prefix/namespace.
> * Update {{StateStoreComponent}} to wrap backends in a namespaced repository 
> scoped to the store name.
> * Update {{CacheReifier}} / {{CacheProcessor}} to namespace cache entries.
> * Update {{KeyValueIdempotentRepository}} and 
> {{KeyValueAggregationRepository}} to use namespaced repository wrapping.
> * In {{KeyValueAggregationRepository.unmarshallExchange}}, add type 
> verification before casting stored values.
> * Add unit tests verifying namespace isolation across multiple stores and 
> patterns sharing a repository.
> h3. Tests
> * Unit tests in {{core/camel-support}} and {{components/camel-state-store}} 
> verifying that operations in one store or pattern do not affect, expose, or 
> clear keys in another store or pattern sharing the same repository.
> * Ensure all existing tests in {{camel-support}}, {{camel-state-store}}, and 
> {{camel-core-processor}} pass cleanly.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to