[
https://issues.apache.org/jira/browse/CAMEL-25600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-25600 started by shashank.
----------------------------------------
> camel-telegram - an interrupted send does not cancel the HTTP request, so its
> connection is not released
> --------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25600
> URL: https://issues.apache.org/jira/browse/CAMEL-25600
> Project: Camel
> Issue Type: Bug
> Components: camel-telegram
> Reporter: Claus Ibsen
> Assignee: shashank
> Priority: Major
> Fix For: 4.24.0
>
>
> Follow-up of CAMEL-25577 (PR #27761), found in review.
> {{TelegramMessageHandler}} waits on {{response}}, which is the {{thenApply}}
> stage of the future returned by {{HttpClient.sendAsync}}. On interrupt it
> calls {{response.cancel(true)}}, but cancelling a dependent stage does not
> cancel the source future, so the HTTP request keeps going. When its answer
> arrives the handler is skipped, and the {{ofInputStream()}} body is never
> read or closed, so the connection is not released.
> Since Java 16 the {{HttpClient}} aborts the exchange when the future returned
> by {{sendAsync}} is cancelled. Keep that future and cancel it:
> {code:java}
> CompletableFuture<HttpResponse<InputStream>> sent =
> apiClient.client().sendAsync(...);
> CompletableFuture<Object> response =
> sent.thenApply(telegramAsyncHandler::handleCompressedResponse);
> ...
> sent.cancel(true);
> {code}
> Only matters on interrupt (for example a forced shutdown).
> _Claude Code on behalf of Claus Ibsen_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)