Arbitration deadlocks

Arbitration deadlocks can occur if arbitration is not carefully considered in the design process. The resources each phase needs - especially if the phases are synchronized - must be evaluated during the design phase to avoid deadlock during runtime.

For example, suppose two phases are created, PHASE_1 and PHASE_2. PHASE_1 needs resources A and B to function; PHASE_2 needs resources B and A. As the batch starts, PHASE_1 acquires resource A and PHASE_2 acquires resource B. If these phases are programmed to work simultaneously, a deadlock occurs because each phase will acquire only one of the resources it needs and cannot run.

By listing the needed resources for each phase alphabetically or numerically, or by programming the phases to work independently, as opposed to simultaneously, the developer can avoid this deadlock situation.