Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.7.5, 3.7.2
-
None
-
Unknown
Description
My scenario:
- Http client -> Transactional servlet consumer
- Servlet route calls java bean
- Java bean calls another route using Camel Proxy and direct-vm
- CamelInvocationHandler calls direct-vm route and then hangs as route is never executed, waiting for worker
At this point it is all deadlocked and it never ends.
From what I can see the problem happens in DefaultReactiveExecutor.Worker.
From debugging I can see there are two DefaultReactiveExecutor.Workers at the point of deadlock.
At point 3, Worker number 2 executes SimpleTask which waits for it to finish- this task is to execute bean as per step 3.
Bean execution then attempts to trigger another route using Camel Proxy and direct-vm and schedules it on Worker number 2.
However immediately after scheduling on Worker number 2 the direct-vm processor, Worker 1 executes executeFromQueue (triggered by countdownLatch waiting for direct-vm call to finish) which then causes deadlock because task added to Worker number 2 is never executed.
I have confirmed above in debugging, will try to come up with simple test case as our scenario is rather complex and involves multiple projects.
Unfortunately for us this is blocker as our solution which was working perfectly fine with camel 2 is not working.
Attachments
Issue Links
- links to