Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.20.1
-
None
-
Unknown
-
Regression
Description
We're using a lot of endpoints with path parameters, such as: restlet://https://localhost:58530//people/{personId}?restletMethod=GET
The endpoint URI contains curly brackets, which is invalid and doesn't pass validation in URI.create. Unfortunately, that is exactly what happens in OpenTracingTracer:
SpanDecorator sd = decorators.get(URI.create(endpoint.getEndpointUri()).getScheme());
Naturally, this results in OpenTracing not working and lots of warnings like this:
WARN o.a.c.opentracing.OpenTracingTracer - OpenTracing: Failed to capture tracing data java.lang.IllegalArgumentException: Illegal character in path at index 42: restlet://https://localhost:58530//people/{personId}?restletMethod=GET at java.net.URI.create(URI.java:852) at org.apache.camel.opentracing.OpenTracingTracer.getSpanDecorator(OpenTracingTracer.java:192) at org.apache.camel.opentracing.OpenTracingTracer$OpenTracingEventNotifier.notify(OpenTracingTracer.java:218) at org.apache.camel.util.EventHelper.doNotifyEvent(EventHelper.java:1096) at org.apache.camel.util.EventHelper.notifyExchangeSending(EventHelper.java:833) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:137) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:110) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:110) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:110) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:110) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197) at org.apache.camel.component.timer.TimerConsumer$2.run(TimerConsumer.java:110) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.URISyntaxException: Illegal character in path at index 42: restlet://https://localhost:58530//people/{personId}?restletMethod=GET at java.net.URI$Parser.fail(URI.java:2848) at java.net.URI$Parser.checkChars(URI.java:3021) at java.net.URI$Parser.parseHierarchical(URI.java:3105) at java.net.URI$Parser.parse(URI.java:3053) at java.net.URI.<init>(URI.java:588) at java.net.URI.create(URI.java:850) ... 40 common frames omitted
Previously Restlet endpoint URI used normal brackets instead of curly brackets, so this wasn't an issue.
Attachments
Issue Links
- is broken by
-
CAMEL-11276 camel-restlet URI uses ( ) rather than { } for path parameters
- Resolved
- is related to
-
CAMEL-12289 URISyntaxException in AbstractSpanDecorator
- Resolved