Methods and apparatus, including computer program products, for
communications in a distributed software system. An operation request
from a remote computer is received, and provisionally executes an
operation identified by the operation request. A first message is
generated. The first message contains a transaction identifier
identifying the operation request, an unsuccessful indicator flag, and a
temporary data store. The temporary data store identifies tentatively
written data generated by the operation. The first message is stored in a
message store. If the successful completion of the operation is detected,
a second message is generated. The second message contains the
transaction identifier as well as a successful indicator flag. The second
message is stored in the message store, and the message is transmitted to
the remote computer. If the failure of the operation is detected, the
message stored in the message store is transmitted to the remote
computer.