FV-6: Liveness properties + fairness constraints
- mvcc.tla: Add CommitProgress liveness (verified with WF_vars) - raft/twopc/mvcc/gossip: Add Spec definitions with WF_vars(Next) - gossip.tla: Fix LearnViaGossip strength-based filtering (prevents overwriting Dead/Suspect with weaker state) - twopc.tla: Add DecideCommitAction/DecideAbortAction for SF fairness - Update all .cfg files to use SPECIFICATION Spec - Update CHANGELOG.md -> v1.1.0, VERSION -> 1.1.0, PLAN.md
This commit is contained in:
@@ -223,4 +223,19 @@ TypeOk ==
|
||||
/\ coordinatorLog \in [1..MaxTxnId -> {"Commit","Abort", Nil}]
|
||||
/\ coordinatorAlive \in [1..MaxTxnId -> BOOLEAN]
|
||||
|
||||
\* Liveness properties
|
||||
|
||||
\* Any prepared participant eventually learns the final decision (Committed or Aborted).
|
||||
ParticipantProgress ==
|
||||
\A t \in 1..MaxTxnId : \A p \in Participants :
|
||||
participantState[t][p] = "Prepared" ~> participantState[t][p] \in {"Committed", "Aborted"}
|
||||
|
||||
\* Actions used for fairness constraints.
|
||||
DecideCommitAction == \E t \in 1..MaxTxnId : DecideCommit(t)
|
||||
DecideAbortAction == \E t \in 1..MaxTxnId : DecideAbort(t)
|
||||
|
||||
\* Specification with weak fairness + strong fairness for coordinator decisions.
|
||||
Spec == Init /\ [][Next]_vars /\ WF_vars(Next)
|
||||
/\ SF_vars(DecideCommitAction) /\ SF_vars(DecideAbortAction)
|
||||
|
||||
=============================================================================
|
||||
|
||||
Reference in New Issue
Block a user