[
https://issues.apache.org/jira/browse/ARTEMIS-5819?focusedWorklogId=996791&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-996791
]
ASF GitHub Bot logged work on ARTEMIS-5819:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 17/Dec/25 20:52
Start Date: 17/Dec/25 20:52
Worklog Time Spent: 10m
Work Description: jbertram opened a new pull request, #6149:
URL: https://github.com/apache/artemis/pull/6149
I'm removing all the HTTP-specific idle connection functionality for 2
reasons:
- the client-side keep-alive mechanism is completely broken
- this duplicates the pinging functionality already in the Core protocol
When the client-side sends an HTTP request for keep-alive purposes, it sends
a GET. The broker only handles POST requests and therefore throws a
ClassCastException causing the connection to fail. This appears to have been
broken for a long time.
Furthermore, both the client-side and broker-side HTTP-specific keep-alive
code appears to be completely unnecessary. When httpEnabled=true the Core
client simply tunnels it's normal packets through HTTP requests, including the
normal ping packets to & from the broker. There is no need to have another
keep-alive mechanism assuming the client configures their
clientFailureCheckPeriod and connectionTTL appropriately. I can only assume
this code was added for a defunct use-case.
Issue Time Tracking
-------------------
Worklog Id: (was: 996791)
Remaining Estimate: 0h
Time Spent: 10m
> HttpIdleTimer sending GET rather than POST
> ------------------------------------------
>
> Key: ARTEMIS-5819
> URL: https://issues.apache.org/jira/browse/ARTEMIS-5819
> Project: Artemis
> Issue Type: Bug
> Reporter: Justin Bertram
> Assignee: Justin Bertram
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> The {{HttpIdleTimer}} is used on a Core client when the connection url
> contains {{httpEnabled=true}}. It sends HTTP requests intermittently in order
> to keep the connection alive. However, it sends {{GET}} requests rather than
> {{POST}} requests which results in a {{WARN}} message like this on the broker:
> {noformat}
> WARN [org.apache.activemq.artemis.core.client] AMQ212037: CORE connection
> failure to 123.456.789.012:12345 has been detected: class
> io.netty.handler.codec.http.HttpObjectAggregator$AggregatedFullHttpRequest
> cannot be cast to class io.netty.buffer.ByteBuf
> (io.netty.handler.codec.http.HttpObjectAggregator$AggregatedFullHttpRequest
> and io.netty.buffer.ByteBuf are in unnamed module of loader 'app')
> [code=GENERIC_EXCEPTION]
> [Thread-1] 16:15:18,058 {noformat}
> Instead of keeping the connection alive it causes the connection to be closed.
> This can be worked around by setting {{httpClientIdleScanPeriod=-1}} in the
> client's connection URL. This stops the {{HttpIdleTimer}} from being executed
> which is not a problem because the the Core client itself will still send
> pings according to the
> [{{clientFailureCheckPeriod}}|https://github.com/apache/artemis/blob/main/docs/user-manual/connection-ttl.adoc#detecting-failure-from-the-client]
> value.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]