You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Luis Sergio Faria Carneiro (Jira)" <ji...@apache.org> on 2025/03/14 14:26:00 UTC
[jira] [Resolved] (CAMEL-21858) camel-tracing: Incorrect http method on trace record
[ https://issues.apache.org/jira/browse/CAMEL-21858?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luis Sergio Faria Carneiro resolved CAMEL-21858.
------------------------------------------------
Resolution: Fixed
> camel-tracing: Incorrect http method on trace record
> ----------------------------------------------------
>
> Key: CAMEL-21858
> URL: https://issues.apache.org/jira/browse/CAMEL-21858
> Project: Camel
> Issue Type: Bug
> Components: camel-tracing
> Reporter: Luis Sergio Faria Carneiro
> Priority: Minor
> Fix For: 4.11.0
>
>
> Consider the following integration created with the yaml dsl:
> {code:java}
> - from:
> uri: rest:get:/demo
> steps:
> - setBody:
> expression:
> constant: '{"hello": "world"}'
> - toD:
> uri: "https://webhook.site/0148d971-4a63-4c61-8845-efd62b7242de"
> parameters:
> bridgeEndpoint: true
> httpMethod: POST
> throwExceptionOnFailure: false{code}
> and that open telemetry tracing is enabled.
> When a request to /demo is performed, we can see that the code performs a POST request to [https://webhook.site/0148d971-4a63-4c61-8845-efd62b7242de,] as it should, but the corresponding trace span reports the http.method as GET instead.
> This happens because the rest consumer sets the CamelHttpMethod header to GET and this header is used by the tracing component to build the span. I expected it to use give priority to the httpMethod endpoint parameter, as the http component does.
> similar scenario happens in this case:
>
> {code:java}
> - from:
> uri: rest:post:/demo
> steps:
> - removeHeaders:
> pattern: "*"
> - setBody:
> expression:
> constant: '{"hello": "world"}'
> - toD:
> uri: "https://webhook.site/0148d971-4a63-4c61-8845-efd62b7242de"
> parameters:
> bridgeEndpoint: true
> httpMethod: POST
> throwExceptionOnFailure: false {code}
> Here we have the rest consumer defined with POST, but we remove the headers.
> And the [span decorator|https://github.com/apache/camel/blob/main/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractHttpSpanDecorator.java#L47] decides it is a GET because the endpoint has query parameters. The endpoint in this case is [https://webhook.site/0148d971-4a63-4c61-8845-efd62b7242de?bridgeEndpoint=true&httpMethod=POST&throwExceptionOnFailure=false|https://webhook.site/0148d971-4a63-4c61-8845-efd62b7242de?httMethod=true&httpMethod=POST&throwExceptionOnFailure=false]
>
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)