You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2020/04/15 08:55:00 UTC

[jira] [Commented] (CAMEL-14891) Race condition using toD

    [ https://issues.apache.org/jira/browse/CAMEL-14891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17083926#comment-17083926 ] 

Claus Ibsen commented on CAMEL-14891:
-------------------------------------

Ah yeah we can initialize the component as part of toD initialization. 

> Race condition using toD
> ------------------------
>
>                 Key: CAMEL-14891
>                 URL: https://issues.apache.org/jira/browse/CAMEL-14891
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-metrics
>    Affects Versions: 3.2.0
>            Reporter: Arian Treffer
>            Assignee: Claus Ibsen
>            Priority: Major
>
> I'm not sure which components are affected by this. I noticed this with the metrics component but it might be a general issue. Consider these two stack traces:
>  
> {{{{"Camel (camel-1) thread #7 - my-thread-1"}}}}
> {{ \{{ at org.apache.camel.component.metrics.MetricsComponent.doInit(MetricsComponent.java:137)}}}}
> {{ \{{ at org.apache.camel.support.service.BaseService.init(BaseService.java:83)}}}}
> {{ \{{ at org.apache.camel.support.service.BaseService.start(BaseService.java:111)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.startService(AbstractCamelContext.java:3056)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.getComponent(AbstractCamelContext.java:537)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.getComponent(AbstractCamelContext.java:500)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:831)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:769)}}}}
> {{ \{{ at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:72)}}}}
> {{ \{{ at org.apache.camel.support.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:114)}}}}
> {{ \{{ at org.apache.camel.support.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:92)}}}}
> {{ \{{ at org.apache.camel.processor.SendDynamicProcessor.resolveEndpoint(SendDynamicProcessor.java:289)}}}}
> {{ \{{ at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:157)}}}}
> {{ \{{ at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)}}}}
> {{ \{{ at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)}}}}
> {{ \{{ at org.apache.camel.impl.engine.DefaultReactiveExecutor.schedule(DefaultReactiveExecutor.java:55)}}}}
> {{ \{{ at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.lambda$run$0(RedeliveryErrorHandler.java:398)}}}}
> {{ \{{ at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask$$Lambda$742.2026232778.done}}}}
> {{ \{{ at org.apache.camel.processor.ThreadsProcessor$ProcessCall.run(ThreadsProcessor.java:88)}}}}
> {{ \{{ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)}}}}
> {{ \{{ at java.util.concurrent.FutureTask.run(FutureTask.java:266)}}}}
> {{ \{{ 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)}}}}{{{{"Camel (camel-1) thread #8 - my-thread-2"}}}}
> {{ \{{ at org.apache.camel.component.metrics.MetricsComponent.createEndpoint(MetricsComponent.java:60)}}}}
> {{ \{{ at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:233)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:842)}}}}
> {{ \{{ at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:769)}}}}
> {{ \{{ at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:72)}}}}
> {{ \{{ at org.apache.camel.support.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:114)}}}}
> {{ \{{ at org.apache.camel.support.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:92)}}}}
> {{ \{{ at org.apache.camel.processor.SendDynamicProcessor.resolveEndpoint(SendDynamicProcessor.java:289)}}}}
> {{ \{{ at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:157)}}}}
> {{ \{{ at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)}}}}
> {{ \{{ at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)}}}}
> {{ \{{ at org.apache.camel.impl.engine.DefaultReactiveExecutor.schedule(DefaultReactiveExecutor.java:55)}}}}
> {{ \{{ at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.lambda$run$0(RedeliveryErrorHandler.java:398)}}}}
> {{ \{{ at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask$$Lambda$742.2026232778.done}}}}
> {{ \{{ at org.apache.camel.processor.ThreadsProcessor$ProcessCall.run(ThreadsProcessor.java:88)}}}}
> {{ \{{ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)}}}}
> {{ \{{ at java.util.concurrent.FutureTask.run(FutureTask.java:266)}}}}
> {{ \{{ 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)}}}}
>  
> As you can see, thread #8 tries to create an endpoint from the metrics component while thread #7 is still initializing it. This causes endpoinds to be created from uninitialized components.
>  
> Both threads are working on the same node in the same route, which is defined using the DSL:
> {{.toD("metrics:counter:request.${headers.product}-xcount?increment=1")}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)