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 2025/11/06 15:16:00 UTC

[jira] [Resolved] (CAMEL-22658) [camel-google-pubsub] GooglePubsubProducer fails with INVALID_ARGUMENT

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

Claus Ibsen resolved CAMEL-22658.
---------------------------------
    Resolution: Fixed

Thanks for reporting and the PR

> [camel-google-pubsub] GooglePubsubProducer fails with INVALID_ARGUMENT
> ----------------------------------------------------------------------
>
>                 Key: CAMEL-22658
>                 URL: https://issues.apache.org/jira/browse/CAMEL-22658
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-google-pubsub
>    Affects Versions: 4.14.2
>            Reporter: Dave Riseley
>            Priority: Minor
>             Fix For: 4.14.3, 4.17.0
>
>
> Since the change for CAMEL-22403 was applied, we have had issues where the Camel PubSub producer fails to send messages to a Google Pub Sub topic.
> The scenario is:
> 1. PubSub message received by the consumer
> 2. Processing occurs
> 3. Attempt to send response message to a different topic.
> The exception seen is:
> {code}
> java.util.concurrent.ExecutionException: com.google.api.gax.rpc.InvalidArgumentException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: The request contains an attribute key that is not valid (key=googclient_deliveryattempt). Attribute keys must be non-empty and must not begin with 'goog' (case-insensitive).
> 	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:292)
> 	at com.google.common.util.concurrent.AbstractFutureState.blockingGet(AbstractFutureState.java:255)
> 	at com.google.common.util.concurrent.Platform.get(Platform.java:54)
> 	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:253)
> 	at com.google.api.core.AbstractApiFuture.get(AbstractApiFuture.java:53)
> 	at org.apache.camel.component.google.pubsub.GooglePubsubProducer.send(GooglePubsubProducer.java:138)
> 	at org.apache.camel.component.google.pubsub.GooglePubsubProducer.process(GooglePubsubProducer.java:84)
> 	at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
> 	at org.apache.camel.processor.SendProcessor.sendUsingProducer(SendProcessor.java:251)
> 	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:156)
> 	at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:777)
> 	at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:720)
> 	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
> ...
> {code}
> I believe the issue is in the new GooglePubsubHeaderFilterStrategy class: https://github.com/apache/camel/blob/camel-4.14.x/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubHeaderFilterStrategy.java
> This filters only headers starting with {{x-goog}} or {{X-GOOG}} and not {{goog}}.  The legacy code is still there to filter those headers:
> https://github.com/apache/camel/blob/811f38029a858fa5e35ae6f9979c614b19600f00/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubProducer.java#L113
> but then when the header filter is applied - it allows the {{goog}} headers back in again
> We cannot configure the HeaderFilterStrategy on the GooglePubsubProducer, so can't override this behaviour
> [~squakez] FYI



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