Patent ID: 7174479

Claim:
In a computing system, a method for performing a procedure in the presence of possible failure, the procedure specifying a plurality of states including an initial state and a final state, the procedure further specifying a plurality of transitions between the states, the procedure further specifying an order of the transitions and of the states, the method comprising: monitoring for failures; initializing the procedure at the initial state; and performing the procedure by executing transitions from one state to another state according to the specified order until either the final state is reached or until a failure is detected in a transition; wherein if a failure is detected in a transition, then: transitioning to a recovery coordination state; transitioning from the recovery coordination state to the initial state; re-visiting transitions from one state to another state according to the specified order until either the failed transition is reached or until a further failure is detected in a transition; if the failed transition is reached without further failure, then executing transitions from one state to another state according to the specified order from the failed transition until either the final state is reached or until a further failure is detected in a transition wherein the computing system comprises a plurality of computing devices; wherein at least one transition specified by the procedure is executed on a first computing device; wherein at least one other transition specified by the procedure is executed on a second computing device; wherein the computing system comprises a third computing device; wherein the third computing device comprises a target resource server flag and a current resource server flag; and wherein at least one transition specified by the procedure atomically changes values of both the target resource server flag and the current resource server flag.