Closed mfateev closed 3 years ago
Another user was calling an external service to track workflow state transitions. The call was taking a long time causing workflow task timeout. It took a long time to track the issue down. With the deadlock detector, it would be reported immediately.
Currently if a workflow code by mistake uses Java synchronization primitives it deadlocks as dispatcher relies on cooperative multithreading. Here is an example stack trace that shows that one thread obtains lock (0x00000006c815ddb8) through synchronized method and blocks other thread from making progress.
The proposal is to implement deadlock detection feature to fail decision task with a clear message that Java locking primitives are prohibited inside the workflow code.