{ "model": "finite paper-inspired ZAB; simulated atomic persistence; not ZooKeeper execution", "scenario": "broken-phase2", "expected_mutation": true, "audit_errors": [ "NEWLEADER ACK lacks atomic durable history", "a node forgot an externally delivered prefix", "delivered histories are incompatible" ], "chosen_from_durable_proposal_evidence": [ { "proposal_epoch": 1, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 }, "voters": [ 1, 2 ] }, { "proposal_epoch": 3, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 }, "voters": [ 1, 3 ] } ], "trace": [ { "step": 0, "event": "oracle_and_CEPOCH", "leader": 1, "advertised": { "1": 0, "2": 0 }, "epoch": 1 }, { "step": 1, "event": "send", "message": { "id": 1, "kind": "NEWEPOCH", "src": 1, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 2, "event": "send", "message": { "id": 2, "kind": "NEWEPOCH", "src": 1, "dst": 2, "epoch": 1, "generation": 0 } }, { "step": 3, "event": "receive", "message": { "id": 1, "kind": "NEWEPOCH", "src": 1, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 4, "event": "persist_promise", "node": 1, "disk": { "accepted": 1, "current": 0, "history": [] } }, { "step": 5, "event": "send", "message": { "id": 3, "kind": "ACKE", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "current": 0, "history": [] } }, { "step": 6, "event": "receive", "message": { "id": 2, "kind": "NEWEPOCH", "src": 1, "dst": 2, "epoch": 1, "generation": 0 } }, { "step": 7, "event": "persist_promise", "node": 2, "disk": { "accepted": 1, "current": 0, "history": [] } }, { "step": 8, "event": "send", "message": { "id": 4, "kind": "ACKE", "src": 2, "dst": 1, "epoch": 1, "generation": 0, "current": 0, "history": [] } }, { "step": 9, "event": "receive", "message": { "id": 3, "kind": "ACKE", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "current": 0, "history": [] } }, { "step": 10, "event": "receive", "message": { "id": 4, "kind": "ACKE", "src": 2, "dst": 1, "epoch": 1, "generation": 0, "current": 0, "history": [] } }, { "step": 11, "event": "select_history", "epoch": 1, "promises": { "1": [ 0, [] ], "2": [ 0, [] ] }, "history": [] }, { "step": 12, "event": "send", "message": { "id": 5, "kind": "NEWLEADER", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "history": [] } }, { "step": 13, "event": "send", "message": { "id": 6, "kind": "NEWLEADER", "src": 1, "dst": 2, "epoch": 1, "generation": 0, "history": [] } }, { "step": 14, "event": "receive", "message": { "id": 5, "kind": "NEWLEADER", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "history": [] } }, { "step": 15, "event": "persist_NEWLEADER_atomically", "node": 1, "disk": { "accepted": 1, "current": 1, "history": [] } }, { "step": 16, "event": "send", "message": { "id": 7, "kind": "ACKL", "src": 1, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 17, "event": "receive", "message": { "id": 6, "kind": "NEWLEADER", "src": 1, "dst": 2, "epoch": 1, "generation": 0, "history": [] } }, { "step": 18, "event": "persist_NEWLEADER_atomically", "node": 2, "disk": { "accepted": 1, "current": 1, "history": [] } }, { "step": 19, "event": "send", "message": { "id": 8, "kind": "ACKL", "src": 2, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 20, "event": "receive", "message": { "id": 7, "kind": "ACKL", "src": 1, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 21, "event": "receive", "message": { "id": 8, "kind": "ACKL", "src": 2, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 22, "event": "NEWLEADER_quorum", "epoch": 1, "voters": [ 1, 2 ] }, { "step": 23, "event": "send", "message": { "id": 9, "kind": "ACTIVATE", "src": 1, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 24, "event": "send", "message": { "id": 10, "kind": "ACTIVATE", "src": 1, "dst": 2, "epoch": 1, "generation": 0 } }, { "step": 25, "event": "receive", "message": { "id": 9, "kind": "ACTIVATE", "src": 1, "dst": 1, "epoch": 1, "generation": 0 } }, { "step": 26, "event": "deliver_history", "node": 1, "history": [] }, { "step": 27, "event": "ready", "node": 1, "epoch": 1 }, { "step": 28, "event": "receive", "message": { "id": 10, "kind": "ACTIVATE", "src": 1, "dst": 2, "epoch": 1, "generation": 0 } }, { "step": 29, "event": "deliver_history", "node": 2, "history": [] }, { "step": 30, "event": "ready", "node": 2, "epoch": 1 }, { "step": 31, "event": "broadcast", "leader": 1, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } }, { "step": 32, "event": "send", "message": { "id": 11, "kind": "PROPOSAL", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 33, "event": "send", "message": { "id": 12, "kind": "PROPOSAL", "src": 1, "dst": 2, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 34, "event": "receive", "message": { "id": 11, "kind": "PROPOSAL", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 35, "event": "persist_proposal", "node": 1, "disk": { "accepted": 1, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 36, "event": "send", "message": { "id": 13, "kind": "ACK", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 37, "event": "receive", "message": { "id": 12, "kind": "PROPOSAL", "src": 1, "dst": 2, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 38, "event": "persist_proposal", "node": 2, "disk": { "accepted": 1, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 39, "event": "send", "message": { "id": 14, "kind": "ACK", "src": 2, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 40, "event": "receive", "message": { "id": 13, "kind": "ACK", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 41, "event": "receive", "message": { "id": 14, "kind": "ACK", "src": 2, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 42, "event": "leader_observed_quorum", "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 }, "voters": [ 1, 2 ] }, { "step": 43, "event": "send", "message": { "id": 15, "kind": "COMMIT", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 44, "event": "send", "message": { "id": 16, "kind": "COMMIT", "src": 1, "dst": 2, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 45, "event": "receive", "message": { "id": 15, "kind": "COMMIT", "src": 1, "dst": 1, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 46, "event": "deliver_history", "node": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] }, { "step": 47, "event": "receive", "message": { "id": 16, "kind": "COMMIT", "src": 1, "dst": 2, "epoch": 1, "generation": 0, "txn": { "epoch": 1, "counter": 1, "before": 0, "after": 1 } } }, { "step": 48, "event": "deliver_history", "node": 2, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] }, { "step": 49, "event": "disconnect", "node": 1 }, { "step": 50, "event": "crash", "node": 1 }, { "step": 51, "event": "oracle_and_CEPOCH", "leader": 2, "advertised": { "2": 1, "3": 0 }, "epoch": 2 }, { "step": 52, "event": "send", "message": { "id": 17, "kind": "NEWEPOCH", "src": 2, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 53, "event": "send", "message": { "id": 18, "kind": "NEWEPOCH", "src": 2, "dst": 3, "epoch": 2, "generation": 0 } }, { "step": 54, "event": "receive", "message": { "id": 17, "kind": "NEWEPOCH", "src": 2, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 55, "event": "persist_promise", "node": 2, "disk": { "accepted": 2, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 56, "event": "send", "message": { "id": 19, "kind": "ACKE", "src": 2, "dst": 2, "epoch": 2, "generation": 0, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 57, "event": "receive", "message": { "id": 18, "kind": "NEWEPOCH", "src": 2, "dst": 3, "epoch": 2, "generation": 0 } }, { "step": 58, "event": "persist_promise", "node": 3, "disk": { "accepted": 2, "current": 0, "history": [] } }, { "step": 59, "event": "send", "message": { "id": 20, "kind": "ACKE", "src": 3, "dst": 2, "epoch": 2, "generation": 0, "current": 0, "history": [] } }, { "step": 60, "event": "receive", "message": { "id": 19, "kind": "ACKE", "src": 2, "dst": 2, "epoch": 2, "generation": 0, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 61, "event": "receive", "message": { "id": 20, "kind": "ACKE", "src": 3, "dst": 2, "epoch": 2, "generation": 0, "current": 0, "history": [] } }, { "step": 62, "event": "select_history", "epoch": 2, "promises": { "2": [ 1, [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] ], "3": [ 0, [] ] }, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] }, { "step": 63, "event": "send", "message": { "id": 21, "kind": "NEWLEADER", "src": 2, "dst": 2, "epoch": 2, "generation": 0, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 64, "event": "send", "message": { "id": 22, "kind": "NEWLEADER", "src": 2, "dst": 3, "epoch": 2, "generation": 0, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 65, "event": "receive", "message": { "id": 21, "kind": "NEWLEADER", "src": 2, "dst": 2, "epoch": 2, "generation": 0, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 66, "event": "persist_NEWLEADER_atomically", "node": 2, "disk": { "accepted": 2, "current": 2, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 67, "event": "send", "message": { "id": 23, "kind": "ACKL", "src": 2, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 68, "event": "receive", "message": { "id": 22, "kind": "NEWLEADER", "src": 2, "dst": 3, "epoch": 2, "generation": 0, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 69, "event": "MUTATION_epoch_without_history", "node": 3, "disk": { "accepted": 2, "current": 2, "history": [] } }, { "step": 70, "event": "send", "message": { "id": 24, "kind": "ACKL", "src": 3, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 71, "event": "receive", "message": { "id": 23, "kind": "ACKL", "src": 2, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 72, "event": "receive", "message": { "id": 24, "kind": "ACKL", "src": 3, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 73, "event": "NEWLEADER_quorum", "epoch": 2, "voters": [ 2, 3 ] }, { "step": 74, "event": "send", "message": { "id": 25, "kind": "ACTIVATE", "src": 2, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 75, "event": "send", "message": { "id": 26, "kind": "ACTIVATE", "src": 2, "dst": 3, "epoch": 2, "generation": 0 } }, { "step": 76, "event": "receive", "message": { "id": 25, "kind": "ACTIVATE", "src": 2, "dst": 2, "epoch": 2, "generation": 0 } }, { "step": 77, "event": "deliver_history", "node": 2, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] }, { "step": 78, "event": "ready", "node": 2, "epoch": 2 }, { "step": 79, "event": "receive", "message": { "id": 26, "kind": "ACTIVATE", "src": 2, "dst": 3, "epoch": 2, "generation": 0 } }, { "step": 80, "event": "deliver_history", "node": 3, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] }, { "step": 81, "event": "ready", "node": 3, "epoch": 2 }, { "step": 82, "event": "disconnect", "node": 2 }, { "step": 83, "event": "crash", "node": 2 }, { "step": 84, "event": "disconnect", "node": 3 }, { "step": 85, "event": "crash", "node": 3 }, { "step": 86, "event": "restart", "node": 3, "disk": { "accepted": 2, "current": 2, "history": [] } }, { "step": 87, "event": "restart", "node": 1, "disk": { "accepted": 1, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 88, "event": "oracle_and_CEPOCH", "leader": 3, "advertised": { "1": 1, "3": 2 }, "epoch": 3 }, { "step": 89, "event": "send", "message": { "id": 27, "kind": "NEWEPOCH", "src": 3, "dst": 1, "epoch": 3, "generation": 2 } }, { "step": 90, "event": "send", "message": { "id": 28, "kind": "NEWEPOCH", "src": 3, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 91, "event": "receive", "message": { "id": 27, "kind": "NEWEPOCH", "src": 3, "dst": 1, "epoch": 3, "generation": 2 } }, { "step": 92, "event": "persist_promise", "node": 1, "disk": { "accepted": 3, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 93, "event": "send", "message": { "id": 29, "kind": "ACKE", "src": 1, "dst": 3, "epoch": 3, "generation": 2, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 94, "event": "receive", "message": { "id": 28, "kind": "NEWEPOCH", "src": 3, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 95, "event": "persist_promise", "node": 3, "disk": { "accepted": 3, "current": 2, "history": [] } }, { "step": 96, "event": "send", "message": { "id": 30, "kind": "ACKE", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "current": 2, "history": [] } }, { "step": 97, "event": "receive", "message": { "id": 29, "kind": "ACKE", "src": 1, "dst": 3, "epoch": 3, "generation": 2, "current": 1, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] } }, { "step": 98, "event": "receive", "message": { "id": 30, "kind": "ACKE", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "current": 2, "history": [] } }, { "step": 99, "event": "select_history", "epoch": 3, "promises": { "1": [ 1, [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] ], "3": [ 2, [] ] }, "history": [] }, { "step": 100, "event": "send", "message": { "id": 31, "kind": "NEWLEADER", "src": 3, "dst": 1, "epoch": 3, "generation": 2, "history": [] } }, { "step": 101, "event": "send", "message": { "id": 32, "kind": "NEWLEADER", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "history": [] } }, { "step": 102, "event": "receive", "message": { "id": 31, "kind": "NEWLEADER", "src": 3, "dst": 1, "epoch": 3, "generation": 2, "history": [] } }, { "step": 103, "event": "persist_NEWLEADER_atomically", "node": 1, "disk": { "accepted": 3, "current": 3, "history": [] } }, { "step": 104, "event": "send", "message": { "id": 33, "kind": "ACKL", "src": 1, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 105, "event": "receive", "message": { "id": 32, "kind": "NEWLEADER", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "history": [] } }, { "step": 106, "event": "persist_NEWLEADER_atomically", "node": 3, "disk": { "accepted": 3, "current": 3, "history": [] } }, { "step": 107, "event": "send", "message": { "id": 34, "kind": "ACKL", "src": 3, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 108, "event": "receive", "message": { "id": 33, "kind": "ACKL", "src": 1, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 109, "event": "receive", "message": { "id": 34, "kind": "ACKL", "src": 3, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 110, "event": "NEWLEADER_quorum", "epoch": 3, "voters": [ 1, 3 ] }, { "step": 111, "event": "send", "message": { "id": 35, "kind": "ACTIVATE", "src": 3, "dst": 1, "epoch": 3, "generation": 2 } }, { "step": 112, "event": "send", "message": { "id": 36, "kind": "ACTIVATE", "src": 3, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 113, "event": "receive", "message": { "id": 35, "kind": "ACTIVATE", "src": 3, "dst": 1, "epoch": 3, "generation": 2 } }, { "step": 114, "event": "deliver_history", "node": 1, "history": [] }, { "step": 115, "event": "ready", "node": 1, "epoch": 3 }, { "step": 116, "event": "receive", "message": { "id": 36, "kind": "ACTIVATE", "src": 3, "dst": 3, "epoch": 3, "generation": 2 } }, { "step": 117, "event": "deliver_history", "node": 3, "history": [] }, { "step": 118, "event": "ready", "node": 3, "epoch": 3 }, { "step": 119, "event": "broadcast", "leader": 3, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } }, { "step": 120, "event": "send", "message": { "id": 37, "kind": "PROPOSAL", "src": 3, "dst": 1, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 121, "event": "send", "message": { "id": 38, "kind": "PROPOSAL", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 122, "event": "receive", "message": { "id": 37, "kind": "PROPOSAL", "src": 3, "dst": 1, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 123, "event": "persist_proposal", "node": 1, "disk": { "accepted": 3, "current": 3, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ] } }, { "step": 124, "event": "send", "message": { "id": 39, "kind": "ACK", "src": 1, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 125, "event": "receive", "message": { "id": 38, "kind": "PROPOSAL", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 126, "event": "persist_proposal", "node": 3, "disk": { "accepted": 3, "current": 3, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ] } }, { "step": 127, "event": "send", "message": { "id": 40, "kind": "ACK", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 128, "event": "receive", "message": { "id": 39, "kind": "ACK", "src": 1, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 129, "event": "receive", "message": { "id": 40, "kind": "ACK", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 130, "event": "leader_observed_quorum", "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 }, "voters": [ 1, 3 ] }, { "step": 131, "event": "send", "message": { "id": 41, "kind": "COMMIT", "src": 3, "dst": 1, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 132, "event": "send", "message": { "id": 42, "kind": "COMMIT", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 133, "event": "receive", "message": { "id": 41, "kind": "COMMIT", "src": 3, "dst": 1, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 134, "event": "deliver_history", "node": 1, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ] }, { "step": 135, "event": "receive", "message": { "id": 42, "kind": "COMMIT", "src": 3, "dst": 3, "epoch": 3, "generation": 2, "txn": { "epoch": 3, "counter": 1, "before": 0, "after": 10 } } }, { "step": 136, "event": "deliver_history", "node": 3, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ] } ], "final": { "1": { "disk": { "accepted": 3, "current": 3, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ] }, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ], "delivered": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ], "up": true, "ready": true, "epoch": 3, "leader": 3 }, "2": { "disk": { "accepted": 2, "current": 2, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ] }, "history": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ], "delivered": [ { "epoch": 1, "counter": 1, "before": 0, "after": 1 } ], "up": false, "ready": false, "epoch": 2, "leader": 2 }, "3": { "disk": { "accepted": 3, "current": 3, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ] }, "history": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ], "delivered": [ { "epoch": 3, "counter": 1, "before": 0, "after": 10 } ], "up": true, "ready": true, "epoch": 3, "leader": 3 } } }