Two-phase commit logic.