Patent ID: 8424009

Claim:
In a computer architecture including one or more processors and system memory, the computer architecture also including an application host, a persistence provider, and an instance store, the application host including a plurality of execution threads configured to issue commands for persisting instances to and accessing instances from the instance store, at least a subset of the commands resulting in an execution thread requesting an instance lock during execution, a method for resolving a lock conflict between two or more execution threads, the method comprising: an act of the persistence provider receiving a first command from a first execution thread included in the application host, the first command configured to request acquisition of a lock for a first instance when one or more conditions are satisfied; an act of the persistence provider recording the first command in a command log; an act of the persistence provider submitting the first command to the instance store; an act of the persistence provider receiving a second command from a second execution thread included in the application host, the second command configured to request that a second instance be locked to the second execution thread for processing by the second command; an act of the persistence provider recording the second command in the command log; an act of the persistence provider submitting the second command to the instance store; an act of the persistence provider receiving a lock response for the second command from the instance store, the lock response indicating that the application host is the holder of the lock for the second instance, the lock response received subsequent to submitting the first command and prior to the completion of the first command; an act of the persistence provider referring to the command log to determine that the current resolution of the first command provides insufficient information to determine: (a) if the first command acquired a lock on the first instance and (b) if the first instance and second instance are the same instance, the insufficient information resulting in ambiguity with respect to whether or not the lock the second command requested was a lock previously acquired by the first command; an act of the persistence provider pausing processing of the second command until reaching further resolution of the first command, further resolution providing at least additional information regarding the one or more conditions being satisfied; and an act of the persistence provider determining how to proceed with respect to the second command based on the additional information regarding the resolution of the first command.