diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan-embedded.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan-embedded.json index 4ecb3799a659d..2962b433fb031 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan-embedded.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan-embedded.json @@ -55,15 +55,15 @@ "CamelInfinispanOldValue": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The old value to use for a replace.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OLD_VALUE" }, "CamelInfinispanMap": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A Map to use in case of CamelInfinispanOperationPutAll operation", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAP" }, "CamelInfinispanOperation": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanOperation", "enum": [ "PUT", "PUTASYNC", "PUTALL", "PUTALLASYNC", "PUTIFABSENT", "PUTIFABSENTASYNC", "GET", "GETORDEFAULT", "CONTAINSKEY", "CONTAINSVALUE", "REMOVE", "REMOVEASYNC", "REPLACE", "REPLACEASYNC", "SIZE", "CLEAR", "CLEARASYNC", "QUERY", "STATS", "COMPUTE", "COMPUTEASYNC" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OPERATION" }, - "CamelInfinispanOperationResult": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the header whose value is the result", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, + "CamelInfinispanOperationResult": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "autowired": false, "secret": false, "description": "The name of the header whose value is the result. Deprecation note: Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, "CamelInfinispanOperationResultHeader": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Store the operation result in a header instead of the message body", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT_HEADER" }, "CamelInfinispanLifespanTime": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Lifespan time of a value inside the cache. Negative values are interpreted as infinity.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME" }, "CamelInfinispanTimeUnit": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Lifespan Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME_UNIT" }, "CamelInfinispanMaxIdleTime": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The maximum amount of time an entry is allowed to be idle for before it is considered as expired.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME" }, "CamelInfinispanMaxIdleTimeUnit": { "index": 14, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Max Idle Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME_UNIT" }, - "CamelInfinispanIgnoreReturnValues": { "index": 15, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Signals that a write operation's return value will be ignored, so reading the existing value from a store or from a remote node is not necessary.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#IGNORE_RETURN_VALUES" }, + "CamelInfinispanIgnoreReturnValues": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Signals that a write operation's return value will be ignored, so reading the existing value from a store or from a remote node is not necessary.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#IGNORE_RETURN_VALUES" }, "CamelInfinispanEventData": { "index": 16, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The event data.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#EVENT_DATA" }, - "CamelInfinispanQueryBuilder": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to InifinispanConfiguration's one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, + "CamelInfinispanQueryBuilder": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to the InfinispanConfiguration one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, "CamelInfinispanCommandRetried": { "index": 18, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "This will be true if the write command that caused this had to be retried again due to a topology change.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#COMMAND_RETRIED" }, "CamelInfinispanEntryCreated": { "index": 19, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Indicates whether the cache entry modification event is the result of the cache entry being created.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#ENTRY_CREATED" }, "CamelInfinispanOriginLocal": { "index": 20, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "true if the call originated on the local cache instance; false if originated from a remote one.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#ORIGIN_LOCAL" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan.json index f1fbf00503ac0..40181cff79c9d 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/infinispan.json @@ -67,14 +67,14 @@ "CamelInfinispanOldValue": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The old value to use for a replace.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OLD_VALUE" }, "CamelInfinispanMap": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A Map to use in case of CamelInfinispanOperationPutAll operation", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAP" }, "CamelInfinispanOperation": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanOperation", "enum": [ "PUT", "PUTASYNC", "PUTALL", "PUTALLASYNC", "PUTIFABSENT", "PUTIFABSENTASYNC", "GET", "GETORDEFAULT", "CONTAINSKEY", "CONTAINSVALUE", "REMOVE", "REMOVEASYNC", "REPLACE", "REPLACEASYNC", "SIZE", "CLEAR", "CLEARASYNC", "QUERY", "STATS", "COMPUTE", "COMPUTEASYNC" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OPERATION" }, - "CamelInfinispanOperationResult": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the header whose value is the result", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, + "CamelInfinispanOperationResult": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "autowired": false, "secret": false, "description": "The name of the header whose value is the result. Deprecation note: Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, "CamelInfinispanOperationResultHeader": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Store the operation result in a header instead of the message body", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT_HEADER" }, "CamelInfinispanLifespanTime": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Lifespan time of a value inside the cache. Negative values are interpreted as infinity.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME" }, "CamelInfinispanTimeUnit": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Lifespan Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME_UNIT" }, "CamelInfinispanMaxIdleTime": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The maximum amount of time an entry is allowed to be idle for before it is considered as expired.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME" }, "CamelInfinispanMaxIdleTimeUnit": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Max Idle Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME_UNIT" }, "CamelInfinispanEventData": { "index": 14, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The event data.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#EVENT_DATA" }, - "CamelInfinispanQueryBuilder": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to InifinispanConfiguration's one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, + "CamelInfinispanQueryBuilder": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to the InfinispanConfiguration one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, "CamelInfinispanEntryVersion": { "index": 16, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Provides access to the version of the created cache entry.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#ENTRY_VERSION" }, "CamelInfinispanCommandRetried": { "index": 17, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "This will be true if the write command that caused this had to be retried again due to a topology change.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#COMMAND_RETRIED" } }, diff --git a/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java b/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java index 0b514c541828f..ff18619ebdade 100644 --- a/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java +++ b/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java @@ -47,7 +47,10 @@ public interface InfinispanConstants { @Metadata(label = "producer", description = "The operation to perform.", javaType = "org.apache.camel.component.infinispan.InfinispanOperation") String OPERATION = "CamelInfinispanOperation"; - @Metadata(label = "producer", description = "The name of the header whose value is the result", javaType = "String") + @Metadata(label = "producer", description = "The name of the header whose value is the result", javaType = "String", + deprecationNote = "Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose" + + " the header that carries the result of an operation.") + @Deprecated String RESULT = "CamelInfinispanOperationResult"; @Metadata(label = "producer", description = "Store the operation result in a header instead of the message body", javaType = "String") @@ -66,14 +69,14 @@ public interface InfinispanConstants { @Metadata(label = "producer", description = "The Time Unit of an entry Max Idle Time.", javaType = "java.util.concurrent.TimeUnit") String MAX_IDLE_TIME_UNIT = "CamelInfinispanMaxIdleTimeUnit"; - @Metadata(label = "consumer", + @Metadata(label = "producer", description = "Signals that a write operation's return value will be ignored, so reading the existing value from a store or from a remote node is not necessary.", javaType = "boolean", defaultValue = "false", applicableFor = SCHEME_EMBEDDED) String IGNORE_RETURN_VALUES = "CamelInfinispanIgnoreReturnValues"; @Metadata(label = "consumer", description = "The event data.", javaType = "Object") String EVENT_DATA = "CamelInfinispanEventData"; @Metadata(label = "producer", - description = "The QueryBuilder to use for QUERY command, if not present the command defaults to InifinispanConfiguration's one", + description = "The QueryBuilder to use for QUERY command, if not present the command defaults to the InfinispanConfiguration one", javaType = "org.apache.camel.component.infinispan.InfinispanQueryBuilder") String QUERY_BUILDER = "CamelInfinispanQueryBuilder"; @Metadata(label = "consumer", description = "Provides access to the version of the created cache entry.", javaType = "long", diff --git a/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanIdempotentRepository.java b/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanIdempotentRepository.java index b815fc6519f00..7054cb4ef3ca8 100644 --- a/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanIdempotentRepository.java +++ b/components/camel-infinispan/camel-infinispan-common/src/main/java/org/apache/camel/component/infinispan/InfinispanIdempotentRepository.java @@ -43,14 +43,9 @@ public void setCamelContext(CamelContext camelContext) { @Override @ManagedOperation(description = "Adds the key to the store") public boolean add(String key) { - // need to check first as put will update the entry lifetime so it can not expire its cache lifespan - if (getCache().containsKey(key)) { - // there is already an entry so return false - return false; - } - - Boolean put = getCache().put(key, true); - return put == null; + // putIfAbsent leaves an existing entry untouched, so its lifespan is not extended, and it takes a single + // round trip: the remote repository forces return values, so the previous value is always reported + return getCache().putIfAbsent(key, true) == null; } @Override diff --git a/components/camel-infinispan/camel-infinispan-embedded/src/generated/resources/META-INF/org/apache/camel/component/infinispan/embedded/infinispan-embedded.json b/components/camel-infinispan/camel-infinispan-embedded/src/generated/resources/META-INF/org/apache/camel/component/infinispan/embedded/infinispan-embedded.json index 4ecb3799a659d..2962b433fb031 100644 --- a/components/camel-infinispan/camel-infinispan-embedded/src/generated/resources/META-INF/org/apache/camel/component/infinispan/embedded/infinispan-embedded.json +++ b/components/camel-infinispan/camel-infinispan-embedded/src/generated/resources/META-INF/org/apache/camel/component/infinispan/embedded/infinispan-embedded.json @@ -55,15 +55,15 @@ "CamelInfinispanOldValue": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The old value to use for a replace.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OLD_VALUE" }, "CamelInfinispanMap": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A Map to use in case of CamelInfinispanOperationPutAll operation", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAP" }, "CamelInfinispanOperation": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanOperation", "enum": [ "PUT", "PUTASYNC", "PUTALL", "PUTALLASYNC", "PUTIFABSENT", "PUTIFABSENTASYNC", "GET", "GETORDEFAULT", "CONTAINSKEY", "CONTAINSVALUE", "REMOVE", "REMOVEASYNC", "REPLACE", "REPLACEASYNC", "SIZE", "CLEAR", "CLEARASYNC", "QUERY", "STATS", "COMPUTE", "COMPUTEASYNC" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OPERATION" }, - "CamelInfinispanOperationResult": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the header whose value is the result", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, + "CamelInfinispanOperationResult": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "autowired": false, "secret": false, "description": "The name of the header whose value is the result. Deprecation note: Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, "CamelInfinispanOperationResultHeader": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Store the operation result in a header instead of the message body", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT_HEADER" }, "CamelInfinispanLifespanTime": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Lifespan time of a value inside the cache. Negative values are interpreted as infinity.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME" }, "CamelInfinispanTimeUnit": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Lifespan Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME_UNIT" }, "CamelInfinispanMaxIdleTime": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The maximum amount of time an entry is allowed to be idle for before it is considered as expired.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME" }, "CamelInfinispanMaxIdleTimeUnit": { "index": 14, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Max Idle Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME_UNIT" }, - "CamelInfinispanIgnoreReturnValues": { "index": 15, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Signals that a write operation's return value will be ignored, so reading the existing value from a store or from a remote node is not necessary.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#IGNORE_RETURN_VALUES" }, + "CamelInfinispanIgnoreReturnValues": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Signals that a write operation's return value will be ignored, so reading the existing value from a store or from a remote node is not necessary.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#IGNORE_RETURN_VALUES" }, "CamelInfinispanEventData": { "index": 16, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The event data.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#EVENT_DATA" }, - "CamelInfinispanQueryBuilder": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to InifinispanConfiguration's one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, + "CamelInfinispanQueryBuilder": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to the InfinispanConfiguration one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, "CamelInfinispanCommandRetried": { "index": 18, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "This will be true if the write command that caused this had to be retried again due to a topology change.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#COMMAND_RETRIED" }, "CamelInfinispanEntryCreated": { "index": 19, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Indicates whether the cache entry modification event is the result of the cache entry being created.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#ENTRY_CREATED" }, "CamelInfinispanOriginLocal": { "index": 20, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "true if the call originated on the local cache instance; false if originated from a remote one.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#ORIGIN_LOCAL" }, diff --git a/components/camel-infinispan/camel-infinispan-embedded/src/main/java/org/apache/camel/component/infinispan/embedded/InfinispanEmbeddedConsumer.java b/components/camel-infinispan/camel-infinispan-embedded/src/main/java/org/apache/camel/component/infinispan/embedded/InfinispanEmbeddedConsumer.java index 0bd7aeecaf526..c4550f65fe2b5 100644 --- a/components/camel-infinispan/camel-infinispan-embedded/src/main/java/org/apache/camel/component/infinispan/embedded/InfinispanEmbeddedConsumer.java +++ b/components/camel-infinispan/camel-infinispan-embedded/src/main/java/org/apache/camel/component/infinispan/embedded/InfinispanEmbeddedConsumer.java @@ -62,8 +62,10 @@ protected void doStart() throws Exception { @Override protected void doStop() throws Exception { - super.doStop(); + // the listener has to go before the consumer is stopped, or an event arriving in between is + // processed against a consumer that is already down ServiceHelper.stopService(handler); + super.doStop(); } // ********************************* diff --git a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json index f1fbf00503ac0..40181cff79c9d 100644 --- a/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json +++ b/components/camel-infinispan/camel-infinispan/src/generated/resources/META-INF/org/apache/camel/component/infinispan/remote/infinispan.json @@ -67,14 +67,14 @@ "CamelInfinispanOldValue": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The old value to use for a replace.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OLD_VALUE" }, "CamelInfinispanMap": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A Map to use in case of CamelInfinispanOperationPutAll operation", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAP" }, "CamelInfinispanOperation": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanOperation", "enum": [ "PUT", "PUTASYNC", "PUTALL", "PUTALLASYNC", "PUTIFABSENT", "PUTIFABSENTASYNC", "GET", "GETORDEFAULT", "CONTAINSKEY", "CONTAINSVALUE", "REMOVE", "REMOVEASYNC", "REPLACE", "REPLACEASYNC", "SIZE", "CLEAR", "CLEARASYNC", "QUERY", "STATS", "COMPUTE", "COMPUTEASYNC" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#OPERATION" }, - "CamelInfinispanOperationResult": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the header whose value is the result", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, + "CamelInfinispanOperationResult": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": true, "deprecationNote": "Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "autowired": false, "secret": false, "description": "The name of the header whose value is the result. Deprecation note: Never set nor read by the component. Use CamelInfinispanOperationResultHeader to choose the header that carries the result of an operation.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT" }, "CamelInfinispanOperationResultHeader": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Store the operation result in a header instead of the message body", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#RESULT_HEADER" }, "CamelInfinispanLifespanTime": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Lifespan time of a value inside the cache. Negative values are interpreted as infinity.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME" }, "CamelInfinispanTimeUnit": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Lifespan Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#LIFESPAN_TIME_UNIT" }, "CamelInfinispanMaxIdleTime": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The maximum amount of time an entry is allowed to be idle for before it is considered as expired.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME" }, "CamelInfinispanMaxIdleTimeUnit": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Time Unit of an entry Max Idle Time.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#MAX_IDLE_TIME_UNIT" }, "CamelInfinispanEventData": { "index": 14, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The event data.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#EVENT_DATA" }, - "CamelInfinispanQueryBuilder": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to InifinispanConfiguration's one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, + "CamelInfinispanQueryBuilder": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.infinispan.InfinispanQueryBuilder", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The QueryBuilder to use for QUERY command, if not present the command defaults to the InfinispanConfiguration one", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#QUERY_BUILDER" }, "CamelInfinispanEntryVersion": { "index": 16, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Provides access to the version of the created cache entry.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#ENTRY_VERSION" }, "CamelInfinispanCommandRetried": { "index": 17, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "This will be true if the write command that caused this had to be retried again due to a topology change.", "constantName": "org.apache.camel.component.infinispan.InfinispanConstants#COMMAND_RETRIED" } }, diff --git a/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/InfinispanRemoteConsumer.java b/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/InfinispanRemoteConsumer.java index 7a79246e38084..3d3ae9ca2a903 100644 --- a/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/InfinispanRemoteConsumer.java +++ b/components/camel-infinispan/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/remote/InfinispanRemoteConsumer.java @@ -68,8 +68,10 @@ protected void doStart() throws Exception { @Override protected void doStop() throws Exception { - super.doStop(); + // the listener has to go before the consumer is stopped, or an event arriving in between is + // processed against a consumer that is already down ServiceHelper.stopService(handler); + super.doStop(); } // ********************************* @@ -150,7 +152,7 @@ public void doStop() { try { cache.removeClientListener(listener); } catch (RemoteCacheManagerNotStartedException e) { - LOG.debug("Cannot remote the listener because the cache manager is not started: {}", e.getMessage(), e); + LOG.debug("Cannot remove the listener because the cache manager is not started: {}", e.getMessage(), e); } } diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc index 2a62a71a8cb66..6af48b0c5bd56 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc @@ -1627,3 +1627,14 @@ The `backOffMaxAttempts` option now bounds the attempts to start the delegated c The retry task previously also carried the default five second duration of its budget, which ended the task before the second attempt for any `backOffDelay` at or above the default of five seconds. A delegate that fails to start is therefore retried for longer than before, up to `backOffMaxAttempts` times. + +=== camel-infinispan + +The `CamelInfinispanOperationResult` header is deprecated. It has not been set or read by the component +since the remote and embedded components were split, so a route reading it received nothing. Use +`CamelInfinispanOperationResultHeader` to name the header that carries the result of an operation; without +it the result is placed in the message body, as before. + +The `CamelInfinispanIgnoreReturnValues` header is now documented as a producer header rather than a consumer +one. It has always been read on the producer path, so only its group in the catalog and in the documentation +changes. diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEmbeddedEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEmbeddedEndpointBuilderFactory.java index b30ea35d2e155..c2380faa2ac95 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEmbeddedEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanEmbeddedEndpointBuilderFactory.java @@ -1225,7 +1225,10 @@ public String infinispanOperation() { return "CamelInfinispanOperation"; } /** - * The name of the header whose value is the result. + * The name of the header whose value is the result. Deprecation note: + * Never set nor read by the component. Use + * CamelInfinispanOperationResultHeader to choose the header that + * carries the result of an operation. * * The option is a: {@code String} type. * @@ -1233,6 +1236,7 @@ public String infinispanOperation() { * * @return the name of the header {@code InfinispanOperationResult}. */ + @Deprecated public String infinispanOperationResult() { return "CamelInfinispanOperationResult"; } @@ -1307,7 +1311,7 @@ public String infinispanMaxIdleTimeUnit() { * The option is a: {@code boolean} type. * * Default: false - * Group: consumer + * Group: producer * * @return the name of the header {@code InfinispanIgnoreReturnValues}. */ @@ -1328,7 +1332,7 @@ public String infinispanEventData() { } /** * The QueryBuilder to use for QUERY command, if not present the command - * defaults to InifinispanConfiguration's one. + * defaults to the InfinispanConfiguration one. * * The option is a: {@code * org.apache.camel.component.infinispan.InfinispanQueryBuilder} type. diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanRemoteEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanRemoteEndpointBuilderFactory.java index 6440902e50315..74729d024de2c 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanRemoteEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/InfinispanRemoteEndpointBuilderFactory.java @@ -1811,7 +1811,10 @@ public String infinispanOperation() { return "CamelInfinispanOperation"; } /** - * The name of the header whose value is the result. + * The name of the header whose value is the result. Deprecation note: + * Never set nor read by the component. Use + * CamelInfinispanOperationResultHeader to choose the header that + * carries the result of an operation. * * The option is a: {@code String} type. * @@ -1819,6 +1822,7 @@ public String infinispanOperation() { * * @return the name of the header {@code InfinispanOperationResult}. */ + @Deprecated public String infinispanOperationResult() { return "CamelInfinispanOperationResult"; } @@ -1899,7 +1903,7 @@ public String infinispanEventData() { } /** * The QueryBuilder to use for QUERY command, if not present the command - * defaults to InifinispanConfiguration's one. + * defaults to the InfinispanConfiguration one. * * The option is a: {@code * org.apache.camel.component.infinispan.InfinispanQueryBuilder} type.