Dave Riseley created CAMEL-23571:
------------------------------------

             Summary: Google PubSub component leaves orphaned channels when 
using PubSub emulator
                 Key: CAMEL-23571
                 URL: https://issues.apache.org/jira/browse/CAMEL-23571
             Project: Camel
          Issue Type: Bug
          Components: camel-google-pubsub
    Affects Versions: 4.20.0, 4.18.2
            Reporter: Dave Riseley


When using the Google PubSub emulator, orphaned channels are left open by the 
GooglePubsubComponent that are cleaned up via garbage collection.  When this 
happens,  a stack trace similar to the following is seen in the logs:

{code}
2026-05-20 14:46:01,246 [t-max-delivery]] ERROR ManagedChannelOrphanWrapper    
- *~*~*~ Previous channel ManagedChannelImpl{logId=2, target=localhost:32920} 
was garbage collected without being shut down! ~*~*~*
    Make sure to call shutdown()/shutdownNow()
java.lang.RuntimeException: ManagedChannel allocation site
        at 
io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.<init>(ManagedChannelOrphanWrapper.java:110)
        at 
io.grpc.internal.ManagedChannelOrphanWrapper.<init>(ManagedChannelOrphanWrapper.java:60)
        at 
io.grpc.internal.ManagedChannelOrphanWrapper.<init>(ManagedChannelOrphanWrapper.java:51)
        at 
io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:737)
        at 
io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:278)
        at 
org.apache.camel.component.google.pubsub.GooglePubsubComponent.getSubscriptionAdminClient(GooglePubsubComponent.java:222)
        at 
org.apache.camel.component.google.pubsub.GooglePubsubConsumer.resolveMaxDeliveryAttempts(GooglePubsubConsumer.java:146)
        at 
org.apache.camel.component.google.pubsub.GooglePubsubConsumer.doStart(GooglePubsubConsumer.java:93)
        at 
org.apache.camel.support.service.BaseService.start(BaseService.java:132)
        at 
org.apache.camel.support.service.ServiceHelper.startService(ServiceHelper.java:129)
...
{code}

This entries are visible in the camel-google-pubsub-test.log produced by the 
unit and integration tests, which use the PubSub emulator.

This issue appears to have been introduced by CAMEL-23142 ([~acosentino] FYI)

The fix is to switch to use an InstantiatingGrpcChannelProvider which creates 
channels whose lifecycle is managed by the owning client.

I will create a PR that updates the tests to fail if these orphaned channels 
are logged and corrects the implementation.



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

Reply via email to