Next Prev: Zero Copy Up: Introduction

Faults

Given the number of components that we are dealing with and the fact that we are interested in supporting applications that run for very long times, failures are inevitable. The Portals API recognizes that the underlying transport may not be able to successfully complete an operation once it has been initiated. This is reflected in the fact that the Portals API reports three types of events: events indicating the initiation of an operation, events indicating the successful completion of an operation, and events indicating the unsuccessful completion of an operation. Every initiation event is eventually followed by a successful completion event or an unsuccessful completion event.

Between the time an operation is started and the time that the operation completes (successfully or unsuccessfully), any memory associated with the operation should be considered volatile. That is, the memory may be changed in unpredictable ways while the operation is progressing. Once the operation completes, the memory associated with the operation will not be subject to further modification (from this operation). Notice that unsuccessful operations may alter memory in an essentially unpredictable fashion.