But importantly, the PRL interface between planner and executive is unconstrained. By making the virtual machine more powerful, we can replace the executive's behavior and logic by corresponding statements in the plan representation language. This level allows the planner to resolve all of the global interactions without getting into details that would over-constrain the executive. Over-constraining EXEC would increase the risk of plan failure. In designing SchedKit, we sought to borrow as much technology as possible from other areas of computer science.
Transactions are a central abstraction used in implementing modern distributed systems.
And yet transactions arose not as a naturally evolved abstraction, but as a radical proposal to overcome the chaos of distributed systems implementation projects at IBM and elsewhere. Both need atomicity because failures are unavoidable, and application designers demand some simple and universal recovery mechanism. Ad hoc recovery mechanisms, with unique guarantees, result in chaos. Finding a satisfactory state after failure may involve search. But without some durability mechanism, execution halts at the first global error.