Detection of deadlocks between concurrently running MuranoPL actions
When application actions run concurrently and there is a way to acquire distributed lock (in order to protect resources from concurrent incompatible modifications) there may be a case of deadlock
There are 2 cases when deadlock can happen:
1) Lock was acquired by the process that is incapable of releasing it (for example it crashed or is not responding). Then each process that would try to wait for it to be released will wait indefinitely
2) Classic deadlock scenario when several processes trying to obtain 2 or more locks but in different order
In all those cases deployment/action execution will last forever and consume resources on the engine.
Such deadlocks need to be detected and reported. Situation need to be handled so that the action/deployment won't last forever
The first case for deadlock should be handled via process monitoring so that if it unexpectedly quits all its locks get automatically released.
The second case can be addressed by the deadlock detection algorithm that periodically will investigate current lock state (which thread waits for which lock) in order to find cross-locking situations that cannot be resolved without external interference. When such deadlock happens all waiting threads must observe an exception
Blueprint information
- Status:
- Not started
- Approver:
- Serg Melikyan
- Priority:
- Undefined
- Drafter:
- Stan Lagun
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by