A data-driven execution paradigm for distributed fault-tolerance