[
https://issues.apache.org/jira/browse/CAMEL-26487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-26487.
---------------------------------
Resolution: Fixed
Fixed on main (4.24.0) by https://github.com/apache/camel/pull/28863 (docs:
https://github.com/apache/camel/pull/29097), on camel-4.22.x (4.22.3) by
https://github.com/apache/camel/pull/29095 and on camel-4.18.x (4.18.6) by
https://github.com/apache/camel/pull/29096.
_Claude Code on behalf of davsclaus_
> camel-netty-http - endpoints that differ only in their options should be
> distinct endpoints
> -------------------------------------------------------------------------------------------
>
> Key: CAMEL-26487
> URL: https://issues.apache.org/jira/browse/CAMEL-26487
> Project: Camel
> Issue Type: Bug
> Components: camel-netty-http
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.18.6, 4.22.3, 4.24.0
>
>
> h3. Current behaviour
> {{NettyHttpComponent.createEndpoint}} creates the {{NettyHttpEndpoint}} with
> the HTTP address only, after the endpoint options have been removed from the
> URI. Two netty-http endpoints whose URIs differ only in such options, for
> example
> {code}
> netty-http:http://localhost:8080/foo
> netty-http:http://localhost:8080/foo?throwExceptionOnFailure=false
> {code}
> therefore have the same endpoint URI, and {{DefaultEndpoint.equals}} /
> {{hashCode}} treat them as the same endpoint. The producer cache of
> {{ProducerTemplate}}, {{toD}} and the other dynamic-URI EIPs is keyed by
> endpoint, so the second endpoint reuses the producer created for the first
> one, and its own options are not used. A static {{to()}} is not affected.
> Other components, such as camel-netty and camel-vertx-http, keep the full URI
> as the endpoint URI.
> h3. Expected behaviour
> Endpoints whose URIs differ in their options are distinct endpoints, and each
> one gets its own producer with its own configuration.
> h3. Proposed change
> * main (4.24): create the endpoint with the full normalized URI, and keep the
> HTTP address in a separate field of {{NettyHttpEndpoint}} (not a
> {{@UriParam}}, with a package-private setter). Use the address for the
> request URL ({{NettyHttpHelper.createURL}}), the SNI host and port
> ({{HttpClientInitializerFactory}}) and {{isProxyProtocol}}. The {{http.url}}
> span attribute of netty-http endpoints should stay the HTTP address.
> * camel-4.22.x and camel-4.18.x: keep the endpoint URI as it is, and override
> {{equals}} / {{hashCode}} in {{NettyHttpEndpoint}} with the full normalized
> URI, so a patch release changes nothing visible.
> h3. Tests
> * Endpoints created from two URIs that differ only in options are not equal,
> and the request URL is still the plain HTTP address.
> * One {{ProducerTemplate}} that sends to the same address with and without an
> option uses each endpoint's own configuration. The same through {{toD}} with
> the option taken from a header.
> * The existing proxy mode, SNI, Rest DSL and send-dynamic tests stay green.
> h3. Upgrade guide
> * 4.24: the endpoint URI and key of netty-http endpoints now include the
> scheme and the options ({{netty-http://http://host:port/path?...}}). This
> changes the names of auto-mocked endpoints
> ({{mock:netty-http:http://host:port/path}}), the JMX endpoint names, and the
> endpoint labels and include/exclude patterns in tracing and metrics.
> * 4.22.3 and 4.18.6: endpoints that differ only in their options are now
> distinct endpoints, each with its own producer.
> _Filed by Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)