You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/09/05 11:45:00 UTC
[jira] [Resolved] (CAMEL-24624) camel-infinispan: catalog, lifecycle and efficiency cleanups
[ https://issues.apache.org/jira/browse/CAMEL-24624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-24624.
---------------------------------
Resolution: Fixed
> 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
> Fix For: 4.23.0
>
>
> 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)