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

Work on CAMEL-24624 started by Andrea Cosentino.
------------------------------------------------
> camel-infinispan: catalog, lifecycle and efficiency cleanups
> ------------------------------------------------------------
>
>                 Key: CAMEL-24624
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24624
>             Project: Camel
>          Issue Type: Task
>          Components: camel-infinispan
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Minor
>
> h3. Summary
> A batch of small consistency, metadata and lifecycle issues found while 
> auditing {{components/camel-infinispan}} at 10f750a2d61f. Grouped into one 
> issue because each is a couple of lines.
> h3. 1. Phantom {{CamelInfinispanOperationResult}} header
> {{InfinispanConstants}} line 51 declares:
> {code:java}
> @Metadata(label = "producer", description = "The name of the header whose 
> value is the result", javaType = "String")
> String RESULT = "CamelInfinispanOperationResult";
> {code}
> The constant has zero references in main or test sources, yet it is published 
> in both {{infinispan.json}} and {{infinispan-embedded.json}} and rendered 
> throughout the component documentation. Its description is also a copy of the 
> one on {{RESULT_HEADER}} ({{CamelInfinispanOperationResultHeader}}), which is 
> the option that actually names the result header - so the docs advertise two 
> headers for one job and the more obvious-looking one does nothing.
> h3. 2. {{CamelInfinispanIgnoreReturnValues}} is labelled as a consumer header
> {{InfinispanConstants}} line 72 marks it {{label = "consumer"}}, but it is 
> read on the producer path, in {{InfinispanEmbeddedManager.getCache(Message, 
> String)}} line 140, and its description ("a write operation's return value") 
> is producer semantics. It lands in the wrong group in the catalog and docs.
> h3. 3. Consumer stop order
> {{InfinispanRemoteConsumer}} line 71 and {{InfinispanEmbeddedConsumer}} line 
> 65 both call {{super.doStop()}} before stopping the handler that owns the 
> cache listener, the reverse of {{doStart()}}. Between the two calls the 
> consumer is stopped while the listener is still registered, so an event 
> arriving in that window is processed against a stopped consumer.
> h3. 4. Idempotent repository does two round trips per check
> {{InfinispanIdempotentRepository.add}} line 47 does {{containsKey}} followed 
> by {{put}}. The result is correct (the decision is taken on {{put}}'s return 
> value), but {{putIfAbsent(key, true) == null}} is a single atomic call that 
> also satisfies the existing comment's intent of not resetting the lifespan of 
> an existing entry. On the Hot Rod repository the current form doubles the 
> network cost of every idempotency check.
> h3. 5. Typos
> * {{InfinispanRemoteConsumer}} line 153: "Cannot remote the listener" should 
> be "remove".
> * {{InfinispanConstants}} line 76: "InifinispanConfiguration" in the 
> {{QUERY_BUILDER}} metadata description.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to