A system and methodology that facilitate persistence for an execution state is provided. The system and methodology employ generalized “idempotent” request(s) that have the property they only execute a request once, and always return the result of that first execution should the request be repeated so as to ensure exactly once execution. A calling middle tier component can exploit these procedures so that it can engage in exploratory reads (which are not idempotent) yet still be able to have their state recovered via replay based on the log at the client and the results retained by the generalized idempotent procedures provided by back end services. The system and methodology can be employed to facilitate successful replay of logless persistent component(s), (e.g., components that do not themselves log any information).;To exploit generalized idempotent procedures, what a middle tier logless component can do with the results of non-idempotent exploratory reads must be circumscribed so that these results only impact arguments to the next generalized idempotent procedure invoked from the middle tier.;Optionally, the system and methodology can facilitate idempotent procedure(s) which support idempotent request abort(s). When an idempotent request abort is requested, it can be identified with the request via a request identifier. Then subsequent request(s) with the same request identifier can return with the same “abort” message.
展开▼