A deadlock is a situation where two or more processes cannot proceed
because each is waiting for the other processes to proceed. Deadlocks
are an undesirable side effect of the concurrency control provided by event
isolation within a collaboration. See the Collaboration
Development Guide for more information on event isolation.
Figure 77 illustrates a deadlock between two active collaboration
groups resulting from the following sequence of events:
- At time T1, Collaboration A1 receives an event, E1, then makes a service
call to Collaboration B2 and sends a child business object for E1.
Collaboration A1 waits for the service call to complete.
- At time T2, Collaboration B1 receives an event, E2, then makes a service
call to Collaboration A2 and sends a child business object for E2.
Collaboration A2 waits for the service call to complete.
- At time T3, Collaboration B2 is waiting for Collaboration B1, because B2
and B1 have the same port binding and the event from B1 was delivered before
the event for B2 arrived.
- At time T4, Collaboration A2 is waiting for Collaboration A1, because A2
and A1 have the same port bindings and the event from A1 was delivered before
the event for B1 arrived.
At this point, all collaborations cannot move forward.
- Note:
- A port binding consists of the business object type and connector
name. See the Collaboration Development Guide for more
information on port bindings.
Figure 77. Deadlock between collaboration groups

This section covers the following topics:
"Steps for detecting a collaboration deadlock"
"Steps for detecting group collaboration deadlocks"
"Steps for fixing a collaboration deadlock"
