Patent ID: 8112462

Claim:
A method of distributed garbage collection in a workflow system, comprising: creating a first item reference having a first item reference identifier at a first processing node having a first processing node identifier; sending the first item reference to one or more destination processing nodes, wherein each destination processing node has its own processing node identifier; in response to creating and sending the first item reference, adding an entry to a reference list on the first processing node, wherein the entry comprises the first item reference identifier and a local set of identifiers comprising the processing node identifier for each destination processing node to which the first item reference was sent; receiving a remote reference dictionary at the first processing node, wherein the remote reference dictionary comprises an entry comprising the first item reference identifier and a remote set of identifiers comprising one or more processing node identifiers, wherein each processing node identifier in the set represents a processing node that received the first item reference; applying the remote reference dictionary to the reference list, by subtracting the remote set of identifiers from the local set of identifiers to yield a first calculated set of one or more processing node identifiers, subtracting the local set of identifiers from the remote set of identifiers to yield a second calculated set of one or more processing node identifiers, and replacing the local set of identifiers with the union of the first and second calculated sets; and determining if the local set of identifiers comprises any processing node identifiers, and if not, marking the first item reference for garbage collection; performing garbage collection on the marked item reference; receiving a second item reference having a second item reference identifier at the first processing node; sending the second item reference to one or more destination processing nodes, wherein each destination processing node has its own processing node identifier; and in response to receiving and sending the second item reference, adding an entry to a local reference dictionary on the first processing node, wherein the entry comprises the second item reference identifier, a set of identifiers comprising the first processing node identifier and the processing node identifier for each destination processing node to which the second item reference was sent, and a status indicator that indicates the status of the second item reference as in process.