Detection of deadlocks between concurrently running MuranoPL actions

Registered by Stan Lagun

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

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.