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/06/08 07:56:00 UTC
[jira] [Assigned] (CAMEL-23291) EventHubs and Google PubSub consumers lack ShutdownAware support, causing potential message loss during graceful shutdown
[ https://issues.apache.org/jira/browse/CAMEL-23291?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen reassigned CAMEL-23291:
-----------------------------------
Assignee: Claus Ibsen
> EventHubs and Google PubSub consumers lack ShutdownAware support, causing potential message loss during graceful shutdown
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-23291
> URL: https://issues.apache.org/jira/browse/CAMEL-23291
> Project: Camel
> Issue Type: Bug
> Components: camel-azure-eventhubs, camel-google-pubsub
> Affects Versions: 4.18.1
> Reporter: Federico Mariani
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.18.3, 4.21.0
>
>
> _EventHubsConsumer_ and _GooglePubsubConsumer_ do not implement ShutdownAware. Both consumers close/stop their underlying client immediately in _doStop()_, without waiting for in-flight exchanges to complete. This is the same root cause that was fixed for ServiceBusConsumer in [CAMEL-23260|https://issues.apache.org/jira/browse/CAMEL-23260].
> When a SIGTERM is received while messages are being processed:
> - EventHubsConsumer.doStop() calls processorClient.stop() and sets it to null immediately
> - GooglePubsubConsumer.doStop() calls stopAsync() on all subscribers and shuts down the executor
> In both cases, in-flight exchanges may fail to ACK/NACK their messages because the underlying client connection is torn down before the exchange completion callbacks run. This can lead to message redelivery and duplicate processing.
> Both consumers should implement ShutdownAware following the pattern established in CAMEL-23260:
> - deferShutdown() should stop the message pump while keeping connections alive
> - getPendingExchangesSize() should track in-flight exchanges
> - Client resources should only be fully closed in doShutdown(), after all exchanges have drained
--
This message was sent by Atlassian Jira
(v8.20.10#820010)