davsclaus opened a new pull request, #25287:
URL: https://github.com/apache/camel/pull/25287

   ## Backport of #25248
   
   Cherry-pick of #25248 onto `camel-4.18.x`.
   
   **Original PR:** #25248 - CAMEL-24315: camel-google-pubsub - stop 
subscribers that finish starting after the consumer stopped
   **Original author:** @henrik242
   **Target branch:** `camel-4.18.x`
   
   ### Original description
   
   Since CAMEL-22898 (4.18.0), GooglePubsubConsumer adds a subscriber to the 
subscribers list only after startAsync().awaitRunning() returns. doStop() and 
deferShutdown() only stop subscribers already in that list, so stopping the 
consumer while a subscriber is still starting misses it. Nothing ever calls 
stopAsync() on it, and the wrapper thread parks forever in awaitTerminated(), 
an uninterruptible Guava wait.
   
   The consumer executor then never terminates: context shutdown waits 2 x 
shutdownAwaitTermination (default 10s) per stuck pool and the thread leaks even 
after forced shutdown. Test suites that stop many CamelContexts (e.g. Spring 
Boot integration tests) pay up to 20s per leaked consumer per context; we saw a 
CI build go from 5 to 25 minutes from this alone.
   
   Fix: after registering the subscriber or pull future, re-check the consumer 
state and stop/cancel it if the consumer is no longer allowed to run.
   
   _Claude Code on behalf of davsclaus_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to