From b80ac8342035014ee616c3eb610fb04a535ebd4e Mon Sep 17 00:00:00 2001 From: zhuo1ang Date: Sun, 22 Aug 2021 22:06:49 +0800 Subject: [PATCH] add check txn status, read key, read SI check (#37) * Add CheckTxnStatus Msgs * Add CheckTxnStatus, haven't checked by the TLC revert a change DistributedTransaction: fix checkTxnStatus bugs DistributedTransaction: CheckTxnStatus: refactor change a var name Co-authored-by: Andy Lok DistributedTransaction: CheckTxnStatus: format spec update CheckTxnStatus comment Co-authored-by: Andy Lok DistributedTransaction: CheckTxnStatus: update comments * Add SI check DistributedTransactions: upd min_commit_ts DistributedTransactions: fix tla parse err DistributedTransactions: upd tests upd lock failed DistributedTransactions: upd read write keys DistributedTransactions: upd Test2 DistributedTransactions: fix many bugs * DistributedTransactions: extract unlock_key function DistributedTransactions: avoid client check txn rollback itself DistributedTransactions: add ClientCheckTxnStatus to `Next` DistributedTransactions: amend pessimistic lock DistributedTransactions: add read SI check DistributedTransactions: upd pdf version DistributedTransactions: remove ServerCleanupLock DistributedTransactions: refactor ClientReadFailed CheckTxnStatus DistributedTransactions: upd server lock key DistributedTransactions: fix ClientRetryLockKey bug DistributedTransactions: fix ReadSI def * DistributedTransactions: upd max read times DistributedTransactions: upd max read times DistributedTransactions: fix bug DistributedTransactions: upd DistributedTransactions: refactor, upd some comments DistributedTransactions: refactor, upd * DistributedTransaction: Add max client check txn times DistributedTransaction: upd lock min_commit_ts check DistributedTransaction: rename wrong name to current_ts DistributedTransaction: reformat some code * fix wrong pessimistic lock amend DistributedTransactions: fix pessimistic lock amend bug upd upd upd upd upd upd upd upd * upd read SI check upd refactor ClientRetryLockKey upd ClientRetryCommit upd max_lock_key_time upd fix bugs upd pessimistic ReadSI check, same as optimistic one * upd remove some resp msgs upd possible msg lost * apply code review suggestion upd * restucture distributed transaction spec Signed-off-by: Andy Lok * fix comment Signed-off-by: Andy Lok * update comment Signed-off-by: Andy Lok * update assume Signed-off-by: Andy Lok * update comment Signed-off-by: Andy Lok * enable snapshot checks Signed-off-by: Andy Lok * fix pessimistic si check Signed-off-by: Andy Lok * add comment Signed-off-by: Andy Lok * add comment Signed-off-by: Andy Lok * add comment Signed-off-by: Andy Lok * fix typo Signed-off-by: Andy Lok * fix dead end in optimistic prewrite Signed-off-by: Andy Lok * add test5 Signed-off-by: Andy Lok Co-authored-by: Andy Lok --- .gitignore | 4 + .../DistributedTransaction.pdf | Bin 204939 -> 230845 bytes .../DistributedTransaction.tla | 896 ++++++++++++------ .../DistributedTransaction___Test1.launch | 122 +-- .../DistributedTransaction___Test2.launch | 102 +- .../DistributedTransaction___Test3.launch | 60 ++ .../DistributedTransaction___Test4.launch | 65 ++ DistributedTransaction/Test1.cfg | 7 +- DistributedTransaction/Test1.tla | 5 +- DistributedTransaction/Test2.cfg | 7 +- DistributedTransaction/Test2.tla | 5 +- DistributedTransaction/Test3.cfg | 31 + DistributedTransaction/Test3.tla | 13 + DistributedTransaction/Test4.cfg | 30 + DistributedTransaction/Test4.tla | 13 + DistributedTransaction/Test5.cfg | 33 + DistributedTransaction/Test5.tla | 13 + 17 files changed, 998 insertions(+), 408 deletions(-) create mode 100644 DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test3.launch create mode 100644 DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test4.launch create mode 100644 DistributedTransaction/Test3.cfg create mode 100644 DistributedTransaction/Test3.tla create mode 100644 DistributedTransaction/Test4.cfg create mode 100644 DistributedTransaction/Test4.tla create mode 100644 DistributedTransaction/Test5.cfg create mode 100644 DistributedTransaction/Test5.tla diff --git a/.gitignore b/.gitignore index 6e72a9c..a3fd7a7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,7 @@ states/ **/*.toolbox/*___*_SnapShot_*.launch **/*.toolbox/.project **/*.toolbox/.settings/ +**/*.toolbox/*.aux +**/*.toolbox/*.log +**/*.toolbox/*.pdf +**/*.toolbox/*.tex diff --git a/DistributedTransaction/DistributedTransaction.pdf b/DistributedTransaction/DistributedTransaction.pdf index defaace73fe141666126122e9e337fa280b08f6a..e020e0dcfc670a3d3cb3803a50395a74e8d8d91d 100644 GIT binary patch delta 136569 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]{Wb$$7>x7Z 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 SUBSET KEY] -\* representing the involved keys of each client. -CONSTANTS CLIENT_KEY -ASSUME \A c \in CLIENT: CLIENT_KEY[c] \subseteq KEY +CONSTANTS CLIENT_READ_KEY, CLIENT_WRITE_KEY +CLIENT_KEY == [c \in CLIENT |-> CLIENT_READ_KEY[c] \union CLIENT_WRITE_KEY[c]] \* CLIENT_PRIMARY is the primary key of each client. CONSTANTS CLIENT_PRIMARY + +\* Pessimistic clients can't read a key without writing it and commit it, +\* and pessimistic client read the keys while acquiring pessimistic locks +\* so the CLIENT_READ_KEY for pessimistic clients should be empty. +ASSUME \A c \in PESSIMISTIC_CLIENT: CLIENT_READ_KEY[c] = {} + +ASSUME \A c \in CLIENT: CLIENT_KEY[c] \subseteq KEY ASSUME \A c \in CLIENT: CLIENT_PRIMARY[c] \in CLIENT_KEY[c] -\* Timestamp of transactions. -Ts == Nat \ {0} -NoneTs == 0 - \* The algorithm is easier to understand in terms of the set of msgs of -\* all messages that have ever been sent. A more accurate model would use +\* all messages that have ever been sent. A more accurate model would use \* one or more variables to represent the messages actually in transit, \* and it would include actions representing message loss and duplication \* as well as message receipt. \* \* In the current spec, there is no need to model message loss because we -\* are mainly concerned with the algorithm's safety property. The safety +\* are mainly concerned with the algorithm's safety property. The safety \* part of the spec says only what messages may be received and does not -\* assert that any message actually is received. Thus, there is no +\* assert that any message actually is received. Thus, there is no \* difference between a lost message and one that is never received. VARIABLES req_msgs VARIABLES resp_msgs -\* key_data[k] is the set of multi-version data of the key. Since we +\* key_data[k] is the set of multi-version data of the key. Since we \* don't care about the concrete value of data, a start_ts is sufficient \* to represent one data version. VARIABLES key_data -\* key_lock[k] is the set of lock (zero or one element). A lock is of a -\* record of [ts: start_ts, primary: key, type: lock_type]. If primary -\* equals to k, it is a primary lock, otherwise secondary lock. lock_type +\* key_lock[k] is the set of lock (zero or one element). A lock is of a +\* record of [ts: start_ts, primary: key, type: lock_type]. If primary +\* equals to k, it is a primary lock, otherwise secondary lock. lock_type \* is one of {"prewrite_optimistic", "prewrite_pessimistic", "lock_key"}. \* lock_key denotes the pessimistic lock performed by ServerLockKey \* action, the prewrite_pessimistic denotes percolator optimistic lock \* who is transformed from a lock_key lock by action \* ServerPrewritePessimistic, and prewrite_optimistic denotes the \* classic optimistic lock. -\* +\* \* In TiKV, key_lock has an additional for_update_ts field and the -\* LockType is of four variants: +\* LockType is of four variants: \* {"PUT", "DELETE", "LOCK", "PESSIMISTIC"}. -\* +\* \* In the spec, we abstract them by: \* (1) LockType \in {"PUT", "DELETE", "LOCK"} /\ for_update_ts = 0 <=> \* type = "prewrite_optimistic" \* (2) LockType \in {"PUT", "DELETE"} /\ for_update_ts > 0 <=> \* type = "prewrite_pessimistic" \* (3) LockType = "PESSIMISTIC" <=> type = "lock_key" +\* +\* There's an min_commit_ts field to indicate the minimum commit time +\* It's used in non-blocked reading. +\* TODO: upd min_commit_ts comment. VARIABLES key_lock \* key_write[k] is a sequence of commit or rollback record of the key. -\* It's a record of [ts, start_ts, type, [protected]]. type can be either -\* "write" or "rollback". ts represents the commit_ts of "write" record. -\* Otherwise, ts equals to start_ts on "rollback" record. "rollback" -\* record has an additional protected field. protected signifies the +\* It's a record of [ts, start_ts, type, [protected]]. type can be either +\* "commit" or "rollback". ts represents the commit_ts of "commit" record. +\* Otherwise, ts equals to start_ts on "rollback" record. "rollback" +\* record has an additional protected field. protected signifies the \* rollback record would not be collapsed. VARIABLES key_write -\* client_state[c] indicates the current transaction stage of client c. -VARIABLES client_state -\* client_ts[c] is a record of [start_ts, commit_ts, for_update_ts]. +\* client_stage[c] indicates the current transaction stage of client c. +VARIABLES client_stage +\* client_ts[c] is a record of [start_ts, commit_ts, for_update_ts, min_commit_ts]. \* Fields are all initialized to NoneTs. VARIABLES client_ts -\* client_key[c] is a record of [locking: {key}, prewriting: {key}]. -\* Hereby, "locking" denotes the keys whose pessimistic locks -\* haven't been acquired, "prewriting" denotes the keys that are pending -\* for prewrite. +\* client_key[c] is a record of [reading: {key}, locking: {key}, prewriting: {key}]. +\* Hereby, "reading" denotes the keys that the optimistic client is reading, +\* "locking" denotes the keys that the pessimistic client is acquiring for pessimistic +\* locks, and "prewriting" denotes the keys that are waiting for prewrite success. VARIABLES client_key +\* client_read[c][k] stores the value that the client has read from server for +\* key `k` (by optimsitic read or pessimistic lock key). This is used for checking +\* snapshot isolation. +VARIABLES client_read \* next_ts is a globally monotonically increasing integer, representing -\* the virtual clock of transactions. In practice, the variable is +\* the virtual clock of transactions. In practice, the variable is \* maintained by PD, the time oracle of a cluster. VARIABLES next_ts msg_vars == <> -client_vars == <> +client_vars == <> key_vars == <> vars == <> +SendReq(msg) == req_msgs' = req_msgs \union {msg} SendReqs(msgs) == req_msgs' = req_msgs \union msgs SendResp(msg) == resp_msgs' = resp_msgs \union {msg} +SendResps(msgs) == resp_msgs' = resp_msgs \union msgs ----------------------------------------------------------------------------- \* Type Definitions +\* Timestamp for transactions. +Ts == Nat \ {0} +NoneTs == 0 + +\* Represents the data version read from TiKV. NoneTs means that the value is empty. +ValueTs == Ts \union {NoneTs} + +\* The messages that sent from client to the server. ReqMessages == [start_ts : Ts, primary : KEY, type : {"lock_key"}, key : KEY, for_update_ts : Ts] + \union [start_ts : Ts, primary : KEY, type : {"read_optimistic"}, key : KEY] \union [start_ts : Ts, primary : KEY, type : {"prewrite_optimistic"}, key : KEY] \union [start_ts : Ts, primary : KEY, type : {"prewrite_pessimistic"}, key : KEY] \union [start_ts : Ts, primary : KEY, type : {"commit"}, commit_ts : Ts] - \union [start_ts : Ts, primary : KEY, type : {"cleanup"}] \union [start_ts : Ts, primary : KEY, type : {"resolve_rollbacked"}] \union [start_ts : Ts, primary : KEY, type : {"resolve_committed"}, commit_ts : Ts] -RespMessages == - [start_ts : Ts, type : {"prewrited", "locked_key"}, key : KEY] - \union [start_ts : Ts, type : {"lock_failed"}, key : KEY, latest_commit_ts : Ts] - \union [start_ts : Ts, type : {"committed", - "commit_aborted", - "prewrite_aborted", - "lock_key_aborted"}] + \* In TiKV, there's an extra flag `rollback_if_not_exist` in the `check_txn_status` request. + \* + \* Because the client prewrites the primary key and secondary key in parallel, it's possible + \* that the primary key lock is missing and also no commit or rollback record for the transaction + \* is found in the write CF, while there is a lock on the secondary key (so other transaction + \* is blocked, therefore this check_txn_status is sent). And there are two possible cases: + \* + \* 1. The prewrite request for the primary key has not reached yet. + \* 2. The client is crashed after sending the prewrite request for the secondary key. + \* + \* In order to address the first case, the client sending `check_txn_status` should not rollback + \* the primary key until the TTL on the secondary key is expired, and thus, `rollback_if_not_exist` + \* should be set to false before the TTL expires (and set true afterward). + \* + \* In TLA+ spec, the TTL is considered constantly expired when the action is taken, so the + \* `rollback_if_not_exist` is assumed true, thus no need to carry it in the message. + \union [start_ts : Ts, caller_start_ts : Ts \union {NoneTs}, primary : KEY, type : {"check_txn_status"}, + resolving_pessimistic_lock : BOOLEAN] + +\* In this spec, the responses from the server to the client are modeled differently from the requests. +\* A response is modeled as a direct call to client handling function which makes the client states and +\* the server states change in atomic. +\* +\* This is ok because, different from requests, which may be duplicated, delayed, or lost, the response +\* can only be lost or delayed. Every client handling function will have a branch that the response +\* is simply ignored, in order to simulate losing the response. Still, we can not simulate the delaying +\* situation, but the client should (we thing) be ok with the delayed response since the client only +\* handles the response at the matching stage (e.g. "reading", "locking", "prewriting"), and every +\* client handling function only changes the client state to one key and leaving the state to other keys +\* untouched, which makes the order of receiving the response to different keys is irrelevant. +\* +\* One more draw back is that, a delayed resent request to server may result in a call the client +\* handling function, which is impossible in real-world because the client must drop the previous +\* connection before retry, in other words, the client is only possible to recieve and to handle the +\* response to the request it last sent. We overcome this by checking whether the client is in the right +\* stage to handle the response. But still, the model will face to some response to the resent resquest +\* for the same client stage. However, the model has just been tested against more but no less cases +\* comparing to the real-world, and is still passing the check. +DirectRespMessages == + [start_ts : Ts, type : {"read_optimistic_succeed"}, key : KEY, value_ts : ValueTs] + \union [start_ts : Ts, type : {"lock_key_succeed"}, key : KEY, for_update_ts : Ts, value_ts : ValueTs] + \union [start_ts : Ts, type : {"key_is_locked"}, key : KEY, lock_primary: KEY, lock_ts : Ts] + \union [start_ts : Ts, type : {"lock_key_failed_write_conflict"}, key : KEY, latest_commit_ts : Ts] + \union [start_ts : Ts, type : {"prewrited"}, key : KEY] + \union [start_ts : Ts, type : {"commit_ts_expired"}, min_commit_ts : Ts] + +\* The responses defined in RespMessages will not be handled by the client in this spec, because they all +\* drive the transaction the an end. The messages defined here are used to record the history, in order to +\* check the invariants later defined in the spec (e.g. TiKV server should never has responded a transcation +\* committed while it has also responded the transaction aborted). +RespMessages == [start_ts : Ts, type : {"committed", + "commit_aborted", + "lock_key_aborted", + "prewrite_aborted"}] TypeOK == /\ req_msgs \in SUBSET ReqMessages /\ resp_msgs \in SUBSET RespMessages /\ key_data \in [KEY -> SUBSET Ts] - /\ key_lock \in [KEY -> SUBSET [ts : Ts, - primary : KEY, + /\ key_lock \in [KEY -> SUBSET [start_ts : Ts, + primary : KEY, + \* As defined above, Ts == Nat \ 0, here we use 0 + \* to indicates that there's no min_commit_ts limit + \* becuase every valid commit ts is larger than 0. + min_commit_ts : Ts \union {NoneTs}, type : {"prewrite_optimistic", "prewrite_pessimistic", "lock_key"}]] + /\ key_write \in [KEY -> SUBSET ( + [ts : Ts, start_ts : Ts, type : {"commit"}] + \union [ts : Ts, start_ts : Ts, type : {"rollback"}, protected : BOOLEAN])] \* At most one lock in key_lock[k] /\ \A k \in KEY: Cardinality(key_lock[k]) <= 1 - /\ key_write \in [KEY -> SUBSET ( - [ts : Ts, start_ts : Ts, type : {"write"}] - \union [ts : Ts, start_ts : Ts, type : {"rollback"}, protected : BOOLEAN])] - /\ client_state \in [CLIENT -> {"init", "locking", "prewriting", "committing"}] + /\ client_stage \in [CLIENT -> {"init", "reading", "locking", "prewriting", "committing"}] /\ client_ts \in [CLIENT -> [start_ts : Ts \union {NoneTs}, commit_ts : Ts \union {NoneTs}, for_update_ts : Ts \union {NoneTs}]] - /\ client_key \in [CLIENT -> [locking: SUBSET KEY, prewriting : SUBSET KEY]] + /\ client_key \in [CLIENT -> [reading : SUBSET KEY, locking : SUBSET KEY, prewriting : SUBSET KEY]] + /\ client_read \in [CLIENT -> [KEY -> + [type : {"not_read_yet"}] + \union [type : {"read_succeed"}, value_ts : ValueTs]]] + /\ \A c \in CLIENT: client_key[c].locking \intersect client_key[c].prewriting = {} /\ next_ts \in Ts ----------------------------------------------------------------------------- \* Client Actions -ClientLockKey(c) == - /\ client_state[c] = "init" - /\ client_state' = [client_state EXCEPT ![c] = "locking"] - /\ client_ts' = [client_ts EXCEPT ![c].start_ts = next_ts, ![c].for_update_ts = next_ts] +\* Once the get request is sent, it exist permanently in the req_msgs. +ClientReadOptimistic(c) == + /\ client_stage[c] = "init" + /\ client_stage' = [client_stage EXCEPT ![c] = "reading"] + /\ client_ts' = [client_ts EXCEPT ![c].start_ts = next_ts] + /\ client_key' = [client_key EXCEPT ![c].reading = CLIENT_READ_KEY[c]] /\ next_ts' = next_ts + 1 - \* Assume we need to acquire pessimistic locks for all keys - /\ client_key' = [client_key EXCEPT ![c].locking = CLIENT_KEY[c]] + /\ SendReqs({[type |-> "read_optimistic", + start_ts |-> client_ts'[c].start_ts, + primary |-> CLIENT_PRIMARY[c], + key |-> k] : k \in CLIENT_READ_KEY[c]}) + /\ UNCHANGED <> + +add_client_read_history(c, k, value_ts) == + client_read' = [client_read EXCEPT ![c][k] = [type |-> "read_succeed", value_ts |-> value_ts]] + +ClientReadOptimisticSucceed(resp) == + /\ Assert(resp.type = "read_optimistic_succeed", "Message Type Error") + /\ \/ UNCHANGED <> + \/ \E c \in CLIENT: + /\ client_ts[c].start_ts = resp.start_ts + /\ client_stage[c] = "reading" + /\ resp.key \in client_key[c].reading + /\ client_key' = [client_key EXCEPT ![c].reading = @ \ {resp.key}] + /\ add_client_read_history(c, resp.key, resp.value_ts) + /\ UNCHANGED <> + +ClientResolveLock(resp) == + /\ Assert(resp.type = "key_is_locked", "Message Type Error") + /\ \/ UNCHANGED <> + \/ \E c \in CLIENT: + /\ client_ts[c].start_ts = resp.start_ts + /\ client_stage[c] = "locking" + /\ resp.key \in client_key[c].locking + /\ SendReq([type |-> "check_txn_status", + start_ts |-> resp.lock_ts, + caller_start_ts |-> NoneTs, + primary |-> resp.lock_primary, + resolving_pessimistic_lock |-> resp.lock_type = "lock_key"]) + /\ UNCHANGED <> + +ClientLockKey(c) == + /\ client_stage[c] = "init" + /\ client_stage' = [client_stage EXCEPT ![c] = "locking"] + /\ client_ts' = [client_ts EXCEPT ![c].start_ts = next_ts, ![c].for_update_ts = next_ts] + /\ client_key' = [client_key EXCEPT ![c].locking = CLIENT_WRITE_KEY[c]] + /\ next_ts' = next_ts + 1 + \* For pessimistic clients assume we need to acquire pessimistic locks for all keys. /\ SendReqs({[type |-> "lock_key", start_ts |-> client_ts'[c].start_ts, primary |-> CLIENT_PRIMARY[c], key |-> k, - for_update_ts |-> client_ts'[c].for_update_ts] : k \in CLIENT_KEY[c]}) - /\ UNCHANGED <> + for_update_ts |-> client_ts'[c].for_update_ts] : k \in CLIENT_WRITE_KEY[c]}) + /\ UNCHANGED <> -ClientLockedKey(c) == - /\ client_state[c] = "locking" - /\ \E resp \in resp_msgs : - /\ resp.type = "locked_key" - /\ resp.start_ts = client_ts[c].start_ts - /\ resp.key \in client_key[c].locking - /\ client_key' = [client_key EXCEPT ![c].locking = @ \ {resp.key}] - /\ UNCHANGED <> +ClientLockKeySucceed(resp) == + /\ Assert(resp.type = "lock_key_succeed", "Message Type Error") + /\ \/ UNCHANGED <> + \/ \E c \in CLIENT: + /\ client_ts[c].start_ts = resp.start_ts + \* The client guarantees that it will never recieve a response for + \* a previously sent lock_key request with smaller for_update_ts, which + \* may carry a bad value that breaks the snapshot isolation. This + \* guarantee holds because the previous gRPC connection must have closed. + /\ client_ts[c].for_update_ts = resp.for_update_ts + /\ client_stage[c] = "locking" + /\ resp.key \in client_key[c].locking + /\ client_key' = [client_key EXCEPT ![c].locking = @ \ {resp.key}] + /\ add_client_read_history(c, resp.key, resp.value_ts) + /\ UNCHANGED <> + +ClientLockKeyFailedWriteConflict(resp) == + /\ Assert(resp.type = "lock_key_failed_write_conflict", "Message Type Error") + /\ \/ UNCHANGED <> + \/ \E c \in CLIENT: + /\ client_ts[c].start_ts = resp.start_ts + /\ client_stage[c] = "locking" + /\ resp.key \in client_key[c].locking + /\ resp.latest_commit_ts > client_ts[c].for_update_ts + /\ client_ts' = [client_ts EXCEPT ![c].for_update_ts = next_ts] + /\ next_ts' = next_ts + 1 + /\ SendReqs({[type |-> "lock_key", + start_ts |-> client_ts'[c].start_ts, + primary |-> CLIENT_PRIMARY[c], + key |-> resp.key, + for_update_ts |-> client_ts'[c].for_update_ts]}) + /\ UNCHANGED <> + +ClientPrewriteOptimistic(c) == + /\ client_stage[c] = "reading" + /\ client_key[c].reading = {} + /\ client_stage' = [client_stage EXCEPT ![c] = "prewriting"] + /\ client_key' = [client_key EXCEPT ![c].prewriting = CLIENT_WRITE_KEY[c]] + /\ SendReqs({[type |-> "prewrite_optimistic", + start_ts |-> client_ts[c].start_ts, + primary |-> CLIENT_PRIMARY[c], + key |-> k] : k \in CLIENT_WRITE_KEY[c]}) + /\ UNCHANGED <> -ClientRetryLockKey(c) == - /\ client_state[c] = "locking" - /\ \E resp \in resp_msgs : - /\ resp.type = "lock_failed" - /\ resp.start_ts = client_ts[c].start_ts - /\ resp.latest_commit_ts > client_ts[c].for_update_ts - /\ client_ts' = [client_ts EXCEPT ![c].for_update_ts = resp.latest_commit_ts] - /\ SendReqs({[type |-> "lock_key", - start_ts |-> client_ts'[c].start_ts, - primary |-> CLIENT_PRIMARY[c], - key |-> resp.key, - for_update_ts |-> client_ts'[c].for_update_ts]}) - /\ UNCHANGED <> - ClientPrewritePessimistic(c) == - /\ client_state[c] = "locking" + /\ client_stage[c] = "locking" /\ client_key[c].locking = {} - /\ client_state' = [client_state EXCEPT ![c] = "prewriting"] - /\ client_key' = [client_key EXCEPT ![c].prewriting = CLIENT_KEY[c]] + /\ client_stage' = [client_stage EXCEPT ![c] = "prewriting"] + /\ client_key' = [client_key EXCEPT ![c].prewriting = CLIENT_WRITE_KEY[c]] /\ SendReqs({[type |-> "prewrite_pessimistic", start_ts |-> client_ts[c].start_ts, primary |-> CLIENT_PRIMARY[c], - key |-> k] : k \in CLIENT_KEY[c]}) - /\ UNCHANGED <> + key |-> k] : k \in CLIENT_WRITE_KEY[c]}) + /\ UNCHANGED <> -ClientPrewriteOptimistic(c) == - /\ client_state[c] = "init" - /\ client_state' = [client_state EXCEPT ![c] = "prewriting"] - /\ client_ts' = [client_ts EXCEPT ![c].start_ts = next_ts] - /\ next_ts' = next_ts + 1 - /\ client_key' = [client_key EXCEPT ![c].prewriting = CLIENT_KEY[c]] - /\ SendReqs({[type |-> "prewrite_optimistic", - start_ts |-> client_ts'[c].start_ts, - primary |-> CLIENT_PRIMARY[c], - key |-> k] : k \in CLIENT_KEY[c]}) - /\ UNCHANGED <> - -ClientPrewrited(c) == - /\ client_state[c] = "prewriting" - /\ client_key[c].locking = {} - /\ \E resp \in resp_msgs : - /\ resp.type = "prewrited" - /\ resp.start_ts = client_ts[c].start_ts - /\ resp.key \in client_key[c].prewriting - /\ client_key' = [client_key EXCEPT ![c].prewriting = @ \ {resp.key}] - /\ UNCHANGED <> +ClientPrewrited(resp) == + /\ Assert(resp.type = "prewrited", "Message Type Error") + /\ \/ UNCHANGED <> + \/ \E c \in CLIENT: + /\ client_ts[c].start_ts = resp.start_ts + /\ client_stage[c] = "prewriting" + /\ resp.key \in client_key[c].prewriting + /\ client_key' = [client_key EXCEPT ![c].prewriting = @ \ {resp.key}] + /\ UNCHANGED <> ClientCommit(c) == - /\ client_state[c] = "prewriting" + /\ client_stage[c] = "prewriting" /\ client_key[c].prewriting = {} - /\ client_state' = [client_state EXCEPT ![c] = "committing"] + /\ client_stage' = [client_stage EXCEPT ![c] = "committing"] /\ client_ts' = [client_ts EXCEPT ![c].commit_ts = next_ts] /\ next_ts' = next_ts + 1 /\ SendReqs({[type |-> "commit", - start_ts |-> client_ts'[c].start_ts, - primary |-> CLIENT_PRIMARY[c], - commit_ts |-> client_ts'[c].commit_ts]}) - /\ UNCHANGED <> + start_ts |-> client_ts'[c].start_ts, + primary |-> CLIENT_PRIMARY[c], + commit_ts |-> client_ts'[c].commit_ts]}) + /\ UNCHANGED <> + +ClientRetryCommit(resp) == + /\ Assert(resp.type = "commit_ts_expired", "Message Type Error") + /\ \/ UNCHANGED <> + \/ \E c \in CLIENT: + /\ client_ts[c].start_ts = resp.start_ts + /\ client_stage[c] = "commiting" + /\ client_ts[c].commit_ts < resp.min_commit_ts + /\ client_ts' = [client_ts EXCEPT ![c].commit_ts = next_ts] + /\ next_ts' = next_ts + 1 + /\ SendReqs({[type |-> "commit", + start_ts |-> client_ts'[c].start_ts, + primary |-> CLIENT_PRIMARY[c], + commit_ts |-> client_ts'[c].commit_ts]}) + /\ UNCHANGED <> ----------------------------------------------------------------------------- \* Server Actions \* Write the write column and unlock the lock iff the lock exists. +unlock_key(k) == + /\ key_lock' = [key_lock EXCEPT ![k] = {}] + commit(pk, start_ts, commit_ts) == \E l \in key_lock[pk] : - /\ l.ts = start_ts - /\ key_lock' = [key_lock EXCEPT ![pk] = {}] + /\ l.start_ts = start_ts + /\ unlock_key(pk) /\ key_write' = [key_write EXCEPT ![pk] = @ \union {[ts |-> commit_ts, - type |-> "write", + type |-> "commit", start_ts |-> start_ts]}] \* Rollback the transaction that starts at start_ts on key k. rollback(k, start_ts) == LET \* Rollback record on the primary key of a pessimistic transaction - \* needs to be protected from being collapsed. If we can't decide - \* whether it suffices that because the lock is missing or mismatched, - \* it should also be protected. - protected == \/ \E l \in key_lock[k] : - /\ l.ts = start_ts - /\ l.primary = k - /\ l.type \in {"lock_key", "prewrite_pessimistic"} - \/ \E l \in key_lock[k] : l.ts /= start_ts - \/ key_lock[k] = {} + \* needs to be protected from being collapsed. + protected == \E l \in key_lock[k] : + /\ l.start_ts = start_ts + /\ l.primary = k + /\ l.type \in {"lock_key", "prewrite_pessimistic"} IN \* If a lock exists and has the same ts, unlock it. - /\ IF \E l \in key_lock[k] : l.ts = start_ts - THEN key_lock' = [key_lock EXCEPT ![k] = {}] + /\ IF \E l \in key_lock[k]: l.start_ts = start_ts + THEN unlock_key(k) ELSE UNCHANGED key_lock /\ key_data' = [key_data EXCEPT ![k] = @ \ {start_ts}] - /\ IF - /\ ~ \E w \in key_write[k]: w.ts = start_ts + /\ IF ~ \E w \in key_write[k]: w.ts = start_ts THEN key_write' = [key_write EXCEPT - ![k] = + ![k] = \* collapse rollback - (@ \ {w \in @ : w.type = "rollback" /\ ~w.protected /\ w.ts < start_ts}) + (@ \ {w \in @: w.type = "rollback" /\ ~ w.protected /\ w.ts < start_ts}) \* write rollback record \union {[ts |-> start_ts, start_ts |-> start_ts, @@ -261,50 +398,183 @@ rollback(k, start_ts) == ELSE UNCHANGED <> +\* In optimistic transaction, read_ts is start_ts, and, in pessimistic transaction, +\* read_ts is for_update_ts. +find_readable_commit(k, read_ts) == + LET + all_commits_before_read_ts == {w \in key_write[k]: w.type = "commit" /\ w.ts <= read_ts} + latest_commit_before_read_ts == + {w \in all_commits_before_read_ts : + \A w2 \in all_commits_before_read_ts : + w.ts >= w2.ts} + IN + latest_commit_before_read_ts + +\* Optimistic read successfully. Return `value_ts = NoneTs` if the value is empty. +respond_read_succeed(k, start_ts) == + LET + readable_commit == find_readable_commit(k, start_ts) + IN + \/ /\ readable_commit = {} + /\ ClientReadOptimisticSucceed([start_ts |-> start_ts, + type |-> "read_optimistic_succeed", + key |-> k, + value_ts |-> NoneTs]) + \/ \E committed_record \in readable_commit: + /\ ClientReadOptimisticSucceed([start_ts |-> start_ts, + type |-> "read_optimistic_succeed", + key |-> k, + value_ts |-> committed_record.ts]) + +\* Pessimistic lock successfully. Return `value_ts = NoneTs` if the value is empty. +respond_lock_key_succeed(k, start_ts, for_update_ts) == + LET + readable_commit == find_readable_commit(k, for_update_ts) + IN + \/ /\ readable_commit = {} + /\ ClientLockKeySucceed([start_ts |-> start_ts, + type |-> "lock_key_succeed", + key |-> k, + for_update_ts |-> for_update_ts, + value_ts |-> NoneTs]) + \/ \E committed_record \in readable_commit: + /\ ClientLockKeySucceed([start_ts |-> start_ts, + type |-> "lock_key_succeed", + key |-> k, + for_update_ts |-> for_update_ts, + value_ts |-> committed_record.ts]) + +ServerReadKey == + \E req \in req_msgs : + /\ req.type = "read_optimistic" + /\ \E c \in CLIENT : + /\ client_ts[c].start_ts = req.start_ts + /\ LET + k == req.key + start_ts == req.start_ts + IN + \* If the lock belongs to the transaction sending the request, or + \* if it's a pessimistic lock, return read succeed. + \* + \* The reason why pessimistic lock will not block the read is that + \* the owner transaction of the pessimistic lock is impossible to + \* commit the key with a commit_ts smaller than req.start_ts because + \* the owner transaction must get commit_ts after all prewrites have + \* completed which is apperently not done since the lock type is + \* not a prewrite lock. + /\ IF \/ key_lock[k] = {} + \/ \E l \in key_lock[k]: l.type = "lock_key" \/ l.start_ts = start_ts + THEN + /\ respond_read_succeed(k, start_ts) + /\ UNCHANGED <> + ELSE + \E l \in key_lock[k]: + /\ ClientResolveLock([start_ts |-> start_ts, + type |-> "key_is_locked", + key |-> k, + lock_primary |-> l.primary, + lock_ts |-> l.start_ts]) + /\ UNCHANGED <> + ServerLockKey == \E req \in req_msgs : /\ req.type = "lock_key" /\ LET k == req.key start_ts == req.start_ts + for_update_ts == req.for_update_ts IN - \* Pessimistic lock is allowed only if no stale lock exists. If - \* there is one, wait until ServerCleanupStaleLock to clean it up. - /\ key_lock[k] = {} - /\ LET - latest_write == {w \in key_write[k] : \A w2 \in key_write[k] : w.ts >= w2.ts} - - all_commits == {w \in key_write[k] : w.type = "write"} - latest_commit == {w \in all_commits : \A w2 \in all_commits : w.ts >= w2.ts} - IN - IF \E w \in key_write[k] : w.start_ts = start_ts /\ w.type = "rollback" - THEN - \* If corresponding rollback record is found, which - \* indicates that the transcation is rollbacked, abort the - \* transaction. - /\ SendResp([start_ts |-> start_ts, type |-> "lock_key_aborted"]) + \* Pessimistic lock is allowed only if no stale lock exists. If + \* there is one, wait until ClientCheckTxnStatus to clean it up. + \/ /\ key_lock[k] = {} + /\ LET + all_commits == {w \in key_write[k]: w.type = "commit"} + latest_commit == {w \in all_commits: \A w2 \in all_commits: w.ts >= w2.ts} + IN + IF \E w \in key_write[k]: w.start_ts = start_ts /\ w.type = "rollback" + THEN + \* If corresponding rollback record is found, which + \* indicates that the transcation is rollbacked, abort the + \* transaction. + /\ SendResp([start_ts |-> start_ts, type |-> "lock_key_aborted"]) + /\ UNCHANGED <> + ELSE + \* Acquire pessimistic lock only if for_update_ts of req + \* is greater or equal to the latest "commit" record. + \* Because if the latest record is "commit", it means that + \* a new version is committed after for_update_ts, which + \* violates Read Committed guarantee. + \/ /\ ~ \E w \in latest_commit: w.ts > req.for_update_ts + /\ key_lock' = [key_lock EXCEPT ![k] = {[start_ts |-> start_ts, + primary |-> req.primary, + min_commit_ts |-> NoneTs, + type |-> "lock_key"]}] + /\ respond_lock_key_succeed(k, start_ts, for_update_ts) + /\ UNCHANGED <> + \* Otherwise, reject the request and let client to retry + \* with new for_update_ts. + \/ \E w \in latest_commit : + /\ w.ts > req.for_update_ts + /\ ~ \E w2 \in all_commits: w2.start_ts = req.start_ts + /\ ClientLockKeyFailedWriteConflict([start_ts |-> start_ts, + type |-> "lock_key_failed_write_conflict", + key |-> k, + latest_commit_ts |-> w.ts]) + /\ UNCHANGED <> + \* Lock exsits + \/ \E l \in key_lock[k]: + IF l.start_ts = start_ts + THEN + /\ respond_lock_key_succeed(k, start_ts, for_update_ts) + /\ UNCHANGED <> + ELSE + /\ ClientResolveLock([start_ts |-> start_ts, + type |-> "key_is_locked", + key |-> k, + lock_primary |-> l.primary, + lock_ts |-> l.start_ts, + lock_type |-> l.type]) + /\ UNCHANGED <> + +ServerPrewriteOptimistic == + \E req \in req_msgs: + /\ req.type = "prewrite_optimistic" + /\ LET + k == req.key + start_ts == req.start_ts + IN + \/ /\ key_lock[k] = {} + /\ IF \E w \in key_write[k]: w.start_ts = start_ts /\ w.type = "commit" THEN + \* This is a duplicated prewrite request. + UNCHANGED <> + ELSE IF \/ \E w \in key_write[k]: w.start_ts = start_ts /\ w.type = "rollback" + \/ \E w \in key_write[k]: w.ts >= start_ts THEN + \* This transacstion has been rollbacked or has write conflict. + /\ SendResp([start_ts |-> start_ts, type |-> "prewrite_aborted"]) /\ UNCHANGED <> ELSE - \* Acquire pessimistic lock only if for_update_ts of req - \* is greater or equal to the latest "write" record. - \* Because if the latest record is "write", it means that - \* a new version is committed after for_update_ts, which - \* violates Read Committed guarantee. - \/ /\ ~ \E w \in latest_commit : w.ts > req.for_update_ts - /\ key_lock' = [key_lock EXCEPT ![k] = {[ts |-> start_ts, - primary |-> req.primary, - type |-> "lock_key"]}] - /\ SendResp([start_ts |-> start_ts, type |-> "locked_key", key |-> k]) - /\ UNCHANGED <> - \* Otherwise, reject the request and let client to retry - \* with new for_update_ts. - \/ \E w \in latest_commit : - /\ w.ts > req.for_update_ts - /\ SendResp([start_ts |-> start_ts, - type |-> "lock_failed", - key |-> k, - latest_commit_ts |-> w.ts]) - /\ UNCHANGED <> + \* Prewrite the key. + /\ key_lock' = [key_lock EXCEPT ![k] = {[start_ts |-> start_ts, + primary |-> req.primary, + type |-> "prewrite_optimistic", + min_commit_ts |-> NoneTs]}] + /\ key_data' = [key_data EXCEPT ![k] = @ \union {start_ts}] + /\ ClientPrewrited([start_ts |-> start_ts, type |-> "prewrited", key |-> k]) + /\ UNCHANGED <> + \/ \E l \in key_lock[k]: + IF l.start_ts = start_ts + THEN + /\ ClientPrewrited([start_ts |-> start_ts, type |-> "prewrited", key |-> k]) + /\ UNCHANGED <> + ELSE + \* Clean up the stale lock. + /\ ClientResolveLock([start_ts |-> start_ts, + type |-> "key_is_locked", + key |-> k, + lock_primary |-> l.primary, + lock_ts |-> l.start_ts, + lock_type |-> l.type]) + /\ UNCHANGED <> ServerPrewritePessimistic == \E req \in req_msgs : @@ -313,104 +583,136 @@ ServerPrewritePessimistic == k == req.key start_ts == req.start_ts IN - \* Pessimistic prewrite is allowed only if pressimistic lock is - \* acquired, otherwise abort the transaction. - /\ IF \E l \in key_lock[k] : l.ts = start_ts - THEN - /\ key_lock' = [key_lock EXCEPT ![k] = {[ts |-> start_ts, - primary |-> req.primary, - type |-> "prewrite_pessimistic"]}] - /\ key_data' = [key_data EXCEPT ![k] = @ \union {start_ts}] - /\ SendResp([start_ts |-> start_ts, type |-> "prewrited", key |-> k]) - /\ UNCHANGED <> - ELSE - /\ SendResp([start_ts |-> start_ts, type |-> "prewrite_aborted"]) - /\ UNCHANGED <> - -ServerPrewriteOptimistic == - \E req \in req_msgs : - /\ req.type = "prewrite_optimistic" - /\ LET - k == req.key - start_ts == req.start_ts - IN - /\ IF \E w \in key_write[k] : w.ts >= start_ts - THEN - /\ SendResp([start_ts |-> start_ts, type |-> "prewrite_aborted"]) - /\ UNCHANGED <> - ELSE - \* Optimistic prewrite is allowed only if no stale lock exists. If - \* there is one, wait until ServerCleanupStaleLock to clean it up. - /\ \/ key_lock[k] = {} - \/ \E l \in key_lock[k] : l.ts = start_ts - /\ key_lock' = [key_lock EXCEPT ![k] = {[ts |-> start_ts, - primary |-> req.primary, - type |-> "prewrite_optimistic"]}] - /\ key_data' = [key_data EXCEPT ![k] = @ \union {start_ts}] - /\ SendResp([start_ts |-> start_ts, type |-> "prewrited", key |-> k]) - /\ UNCHANGED <> + \* Pessimistic prewrite is only allowed if pressimistic lock is + \* acquired, or, if there's no lock, and no write record whose + \* commit_ts >= start_ts, otherwise abort the transaction. + IF + \/ \E l \in key_lock[k] : + /\ l.start_ts = start_ts + /\ l.type = "lock_key" + \/ /\ key_lock[k] = {} + /\ ~ \E w \in key_write[k]: w.ts >= start_ts + THEN + /\ key_lock' = [key_lock EXCEPT ![k] = {[start_ts |-> start_ts, + primary |-> req.primary, + type |-> "prewrite_pessimistic", + min_commit_ts |-> NoneTs]}] + /\ key_data' = [key_data EXCEPT ![k] = @ \union {start_ts}] + /\ ClientPrewrited([start_ts |-> start_ts, type |-> "prewrited", key |-> k]) + /\ UNCHANGED <> + ELSE + /\ SendResp([start_ts |-> start_ts, type |-> "prewrite_aborted"]) + /\ UNCHANGED <> ServerCommit == - \E req \in req_msgs : + \E req \in req_msgs: /\ req.type = "commit" /\ LET pk == req.primary start_ts == req.start_ts IN - IF \E w \in key_write[pk] : w.start_ts = start_ts /\ w.type = "write" + IF \E w \in key_write[pk]: w.start_ts = start_ts /\ w.type = "commit" THEN - \* Key has already been committed. Do nothing. + \* Key has already been committed. Do nothing. /\ SendResp([start_ts |-> start_ts, type |-> "committed"]) /\ UNCHANGED <> ELSE - IF \E l \in key_lock[pk] : l.ts = start_ts - THEN - \* Commit the key only if the prewrite lock exists. - /\ commit(pk, start_ts, req.commit_ts) - /\ SendResp([start_ts |-> start_ts, type |-> "committed"]) - /\ UNCHANGED <> - ELSE - \* Otherwise, abort the transaction. - /\ SendResp([start_ts |-> start_ts, type |-> "commit_aborted"]) - /\ UNCHANGED <> + \/ \E l \in key_lock[pk]: + IF l.start_ts = start_ts /\ ~ l.type = "lock_key" + THEN + IF req.commit_ts >= l.min_commit_ts + THEN + \* Commit the key only if the prewrite lock exists and commit_ts is greater than + \* the min_commit_ts in the prewrite lock. + /\ commit(pk, start_ts, req.commit_ts) + /\ SendResp([start_ts |-> start_ts, type |-> "committed"]) + /\ UNCHANGED <> + ELSE + /\ ClientRetryCommit([start_ts |-> start_ts, + type |-> "commit_ts_expired", + min_commit_ts |-> l.min_commit_ts]) + /\ UNCHANGED <> + ELSE + /\ SendResp([start_ts |-> start_ts, type |-> "commit_aborted"]) + /\ UNCHANGED <> + \/ /\ key_lock[pk] = {} + /\ SendResp([start_ts |-> start_ts, type |-> "commit_aborted"]) + /\ UNCHANGED <> -\* In the spec, the primary key with a lock may clean up itself -\* spontaneously. There is no need to model a client to request clean up -\* because there is no difference between a optimistic client trying to -\* read a key that has lock timeouted and the key trying to unlock itself. -ServerCleanupStaleLock == - \E k \in KEY : - \E l \in key_lock[k] : - /\ SendReqs({[type |-> "cleanup", - start_ts |-> l.ts, - primary |-> l.primary]}) +\* Found the matching lock. +check_txn_status_has_lock(lock, caller_start_ts, resolving_pessimistic_lock) == + LET + start_ts == lock.start_ts + pk == lock.primary + IN + \/ IF lock.type = "lock_key" /\ resolving_pessimistic_lock + THEN + \* Pessimistic lock will be unlocked directly without rollback record. + /\ unlock_key(pk) + /\ UNCHANGED <> + ELSE + /\ rollback(pk, start_ts) + /\ SendReqs({[type |-> "resolve_rollbacked", + start_ts |-> start_ts, + primary |-> pk]}) + /\ UNCHANGED <> + \/ + \* Push min_commit_ts. + /\ lock.min_commit_ts <= caller_start_ts + /\ key_lock' = [key_lock EXCEPT ![pk] = {[start_ts |-> lock.start_ts, + type |-> lock.type, + primary |-> lock.primary, + min_commit_ts |-> caller_start_ts + 1]}] + /\ UNCHANGED <> + +\* Lock not found or start_ts on the lock mismatches. +check_txn_status_missing_lock(start_ts, pk, resolving_pessimistic_lock) == + LET + committed_record == {w \in key_write[pk]: w.start_ts = start_ts /\ w.type = "commit"} + IN + IF committed_record /= {} THEN + /\ SendReqs({[type |-> "resolve_committed", + start_ts |-> start_ts, + primary |-> pk, + commit_ts |-> w.ts]: w \in committed_record}) /\ UNCHANGED <> + ELSE IF resolving_pessimistic_lock = TRUE THEN + UNCHANGED <> + ELSE + /\ rollback(pk, start_ts) + /\ SendReqs({[type |-> "resolve_rollbacked", + start_ts |-> start_ts, + primary |-> pk]}) + /\ UNCHANGED <> -\* Clean up stale locks by checking the status of the primary key. Commmit -\* the secondary keys if primary key is committed; otherwise rollback the -\* transaction by rolling-back the primary key, and then also rollback the -\* secondarys. -ServerCleanup == +\* Clean up the stale transaction by checking the status of the primary key. +\* +\* In practice, the transaction will be rolled back only if TTL on the lock is expired. But +\* because it is hard to model the TTL in TLA+ spec, the TTL is considered constantly expired +\* when ServerCheckTxnStatus is called. +\* +\* Moreover, TiKV will send a response `TxnStatus` to the client, and depending on the `TxnStatus` +\* the client will send `resolve_rollback` or `resolve_commit` to the secondary keys to clean up +\* stale locks on secondary keys. In the TLA+ spec, ServerCheckTxnStatus will not respond to the +\* client and instead TiKV will directly send `resolve_rollback` or `resolve_commit` message to +\* the server where the secondary keys are on, because the action of client sending resolve message +\* by proxying the `TxnStatus` from TiKV to other TiKV does not change the state of the client, +\* therefore is equal to directly sending resolve message from TiKV to TiKV directly. +ServerCheckTxnStatus == \E req \in req_msgs : - /\ req.type = "cleanup" + /\ req.type = "check_txn_status" /\ LET - pk == req.primary - start_ts == req.start_ts - committed == {w \in key_write[pk] : w.start_ts = start_ts /\ w.type = "write"} + pk == req.primary + start_ts == req.start_ts IN - IF committed /= {} - THEN - /\ SendReqs({[type |-> "resolve_committed", - start_ts |-> start_ts, - primary |-> pk, - commit_ts |-> w.ts] : w \in committed}) - /\ UNCHANGED <> - ELSE - /\ rollback(pk, start_ts) - /\ SendReqs({[type |-> "resolve_rollbacked", - start_ts |-> start_ts, - primary |-> pk]}) - /\ UNCHANGED <> + \/ \E l \in key_lock[pk]: + IF start_ts = l.start_ts + THEN + check_txn_status_has_lock(l, req.caller_start_ts, req.resolving_pessimistic_lock) + ELSE + check_txn_status_missing_lock(start_ts, pk, req.resolving_pessimistic_lock) + \/ /\ key_lock[pk] = {} + /\ check_txn_status_missing_lock(start_ts, pk, req.resolving_pessimistic_lock) ServerResolveCommitted == \E req \in req_msgs : @@ -421,7 +723,7 @@ ServerResolveCommitted == \E k \in KEY: \E l \in key_lock[k] : /\ l.primary = req.primary - /\ l.ts = start_ts + /\ l.start_ts = start_ts /\ commit(k, start_ts, req.commit_ts) /\ UNCHANGED <> @@ -434,43 +736,41 @@ ServerResolveRollbacked == \E k \in KEY: \E l \in key_lock[k] : /\ l.primary = req.primary - /\ l.ts = start_ts + /\ l.start_ts = start_ts /\ rollback(k, start_ts) /\ UNCHANGED <> ----------------------------------------------------------------------------- \* Specification -Init == +Init == /\ next_ts = 1 /\ req_msgs = {} /\ resp_msgs = {} - /\ client_state = [c \in CLIENT |-> "init"] - /\ client_key = [c \in CLIENT |-> [locking |-> {}, prewriting |-> {}]] + /\ client_stage = [c \in CLIENT |-> "init"] + /\ client_key = [c \in CLIENT |-> [reading |-> {}, locking |-> {}, prewriting |-> {}]] /\ client_ts = [c \in CLIENT |-> [start_ts |-> NoneTs, commit_ts |-> NoneTs, for_update_ts |-> NoneTs]] + /\ client_read = [c \in CLIENT |-> [k \in KEY |-> [type |-> "not_read_yet"]]] /\ key_lock = [k \in KEY |-> {}] /\ key_data = [k \in KEY |-> {}] /\ key_write = [k \in KEY |-> {}] Next == - \/ \E c \in OPTIMISTIC_CLIENT : - \/ ClientPrewriteOptimistic(c) - \/ ClientPrewrited(c) - \/ ClientCommit(c) - \/ \E c \in PESSIMISTIC_CLIENT : - \/ ClientLockKey(c) - \/ ClientLockedKey(c) - \/ ClientRetryLockKey(c) - \/ ClientPrewritePessimistic(c) - \/ ClientPrewrited(c) - \/ ClientCommit(c) + \/ \E c \in OPTIMISTIC_CLIENT: + \/ ClientReadOptimistic(c) + \/ ClientPrewriteOptimistic(c) + \/ ClientCommit(c) + \/ \E c \in PESSIMISTIC_CLIENT: + \/ ClientLockKey(c) + \/ ClientPrewritePessimistic(c) + \/ ClientCommit(c) + \/ ServerReadKey \/ ServerLockKey \/ ServerPrewritePessimistic \/ ServerPrewriteOptimistic \/ ServerCommit - \/ ServerCleanupStaleLock - \/ ServerCleanup + \/ ServerCheckTxnStatus \/ ServerResolveCommitted \/ ServerResolveRollbacked @@ -478,12 +778,12 @@ Spec == Init /\ [][Next]_vars ----------------------------------------------------------------------------- \* Consistency Invariants -\* Check whether there is a "write" record in key_write[k] corresponding +\* Check whether there is a "commit" record in key_write[k] corresponding \* to start_ts. keyCommitted(k, start_ts) == - \E w \in key_write[k] : + \E w \in key_write[k] : /\ w.start_ts = start_ts - /\ w.type = "write" + /\ w.type = "commit" \* A transaction can't be both committed and aborted. UniqueCommitOrAbort == @@ -503,11 +803,11 @@ CommitConsistency == /\ keyCommitted(CLIENT_PRIMARY[c], resp.start_ts) \* Secondary key must be either committed or locked by the \* start_ts of the transaction. - /\ \A k \in CLIENT_KEY[c] : - (~ \E l \in key_lock[k] : l.ts = resp.start_ts) = + /\ \A k \in CLIENT_WRITE_KEY[c] : + (~ \E l \in key_lock[k]: l.start_ts = resp.start_ts) = keyCommitted(k, resp.start_ts) -\* If a transaction is aborted, all key of that transaction must be not +\* If a transaction is aborted, all key of that transaction must not be \* committed. AbortConsistency == \A resp \in resp_msgs : @@ -517,12 +817,12 @@ AbortConsistency == ~ keyCommitted(CLIENT_PRIMARY[c], resp.start_ts) \* For each write, the commit_ts should be strictly greater than the -\* start_ts and have data written into key_data[k]. For each rollback, +\* start_ts and have data written into key_data[k]. For each rollback, \* the commit_ts should equals to the start_ts. WriteConsistency == \A k \in KEY : \A w \in key_write[k] : - \/ /\ w.type = "write" + \/ /\ w.type = "commit" /\ w.ts > w.start_ts /\ w.start_ts \in key_data[k] \/ /\ w.type = "rollback" @@ -534,7 +834,7 @@ UniqueLockOrWrite == \A k \in KEY : \A l \in key_lock[k] : \A w \in key_write[k] : - w.start_ts /= l.ts + w.start_ts /= l.start_ts \* For each key, ecah record in write column should have a unique start_ts. UniqueWrite == @@ -544,40 +844,38 @@ UniqueWrite == ----------------------------------------------------------------------------- \* Snapshot Isolation -\* Asserts that next_ts is monotonically increasing. -NextTsMonotonicity == [][next_ts' >= next_ts]_vars - -\* Asserts that no msg would be deleted once sent. -MsgMonotonicity == - /\ [][\A req \in req_msgs : req \in req_msgs']_vars - /\ [][\A resp \in resp_msgs : resp \in resp_msgs']_vars - \* Asserts that all messages sent should have ts less than next_ts. MsgTsConsistency == /\ \A req \in req_msgs : /\ req.start_ts <= next_ts /\ req.type \in {"commit", "resolve_committed"} => req.commit_ts <= next_ts - /\ \A resp \in resp_msgs : resp.start_ts <= next_ts + /\ \A resp \in resp_msgs: resp.start_ts <= next_ts -\* SnapshotIsolation is implied from the following assumptions (but is not -\* necessary) because SnapshotIsolation means that: -\* (1) Once a transaction is committed, all keys of the transaction should -\* be always readable or have a lock on secondary keys(eventually readable). -\* PROOF BY CommitConsistency, MsgMonotonicity -\* (2) For a given transaction, all transaction that commits after that -\* transaction should have greater commit_ts than the next_ts at the -\* time that the given transaction commits, so as to be able to -\* distinguish the transactions that have committed before and after -\* from all transactions that preserved by (1). -\* PROOF BY NextTsConsistency, MsgTsConsistency -\* (3) All aborted transactions would be always not readable. -\* PROOF BY AbortConsistency, MsgMonotonicity -SnapshotIsolation == /\ CommitConsistency - /\ AbortConsistency - /\ NextTsMonotonicity - /\ MsgMonotonicity - /\ MsgTsConsistency +OptimisticReadSnapshotIsolation == + \A c \in OPTIMISTIC_CLIENT: + \A k \in CLIENT_READ_KEY[c]: + client_read[c][k].type = "read_succeed" => + LET + readable_commit == find_readable_commit(k, client_ts[c].start_ts) + IN + \/ /\ readable_commit = {} + /\ client_read[c][k].value_ts = NoneTs + \/ \E committed_record \in readable_commit: + client_read[c][k].value_ts = committed_record.ts + +PessimisticReadSnapshotIsolation == + \A c \in PESSIMISTIC_CLIENT: + (\E resp \in resp_msgs: resp.start_ts = client_ts[c].start_ts /\ resp.type = "committed") => + \A k \in CLIENT_WRITE_KEY[c]: + client_read[c][k].type = "read_succeed" => + LET + readable_commit == find_readable_commit(k, client_ts[c].for_update_ts) + IN + \/ /\ readable_commit = {} + /\ client_read[c][k].value_ts = NoneTs + \/ \E committed_record \in readable_commit: + client_read[c][k].value_ts = committed_record.ts ----------------------------------------------------------------------------- THEOREM Safety == Spec => [](/\ TypeOK @@ -587,5 +885,7 @@ THEOREM Safety == /\ WriteConsistency /\ UniqueLockOrWrite /\ UniqueWrite - /\ SnapshotIsolation) + /\ OptimisticReadSnapshotIsolation + /\ PessimisticReadSnapshotIsolation + /\ MsgTsConsistency) ============================================================================= diff --git a/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test1.launch b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test1.launch index aec9d79..a609b01 100644 --- a/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test1.launch +++ b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test1.launch @@ -1,60 +1,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test2.launch b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test2.launch index 3e2e636..33d94a0 100644 --- a/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test2.launch +++ b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test2.launch @@ -1,42 +1,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test3.launch b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test3.launch new file mode 100644 index 0000000..5f533fb --- /dev/null +++ b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test3.launch @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test4.launch b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test4.launch new file mode 100644 index 0000000..779d76d --- /dev/null +++ b/DistributedTransaction/DistributedTransaction.toolbox/DistributedTransaction___Test4.launch @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DistributedTransaction/Test1.cfg b/DistributedTransaction/Test1.cfg index 93f0ac2..9ac3a63 100644 --- a/DistributedTransaction/Test1.cfg +++ b/DistributedTransaction/Test1.cfg @@ -6,10 +6,11 @@ CONSTANT c3 = c3 CONSTANT - KEY <- Key + KEY <- Keys OPTIMISTIC_CLIENT <- OptimistiicClient PESSIMISTIC_CLIENT <- PessimisticClient - CLIENT_KEY <- ClientKey + CLIENT_READ_KEY <- ClientReadKeys + CLIENT_WRITE_KEY <- ClientWriteKeys CLIENT_PRIMARY <- ClientPrimary INIT @@ -26,4 +27,6 @@ INVARIANT WriteConsistency UniqueLockOrWrite UniqueWrite + OptimisticReadSnapshotIsolation + PessimisticReadSnapshotIsolation MsgTsConsistency diff --git a/DistributedTransaction/Test1.tla b/DistributedTransaction/Test1.tla index d267bbd..1b8f5ea 100644 --- a/DistributedTransaction/Test1.tla +++ b/DistributedTransaction/Test1.tla @@ -4,9 +4,10 @@ EXTENDS DistributedTransaction, TLC CONSTANT k1, k2 CONSTANT c1, c2, c3 -Key == {k1, k2} +Keys == {k1, k2} OptimistiicClient == {c3} PessimisticClient == {c1, c2} -ClientKey == c1 :> {k1, k2} @@ c2 :> {k1} @@ c3 :> {k1, k2} +ClientReadKeys == c1 :> {} @@ c2 :> {} @@ c3 :> {k1, k2} +ClientWriteKeys == c1 :> {k1, k2} @@ c2 :> {k1} @@ c3 :> {k1, k2} ClientPrimary == c1 :> k1 @@ c2 :> k1 @@ c3 :> k2 ================================================================================ diff --git a/DistributedTransaction/Test2.cfg b/DistributedTransaction/Test2.cfg index 1473b5d..0949218 100644 --- a/DistributedTransaction/Test2.cfg +++ b/DistributedTransaction/Test2.cfg @@ -7,10 +7,11 @@ CONSTANT c3 = c3 CONSTANT - KEY <- Key + KEY <- Keys OPTIMISTIC_CLIENT <- OptimistiicClient PESSIMISTIC_CLIENT <- PessimisticClient - CLIENT_KEY <- ClientKey + CLIENT_READ_KEY <- ClientReadKeys + CLIENT_WRITE_KEY <- ClientWriteKeys CLIENT_PRIMARY <- ClientPrimary INIT @@ -27,4 +28,6 @@ INVARIANT WriteConsistency UniqueLockOrWrite UniqueWrite + OptimisticReadSnapshotIsolation + PessimisticReadSnapshotIsolation MsgTsConsistency diff --git a/DistributedTransaction/Test2.tla b/DistributedTransaction/Test2.tla index f36a89e..e31dd23 100644 --- a/DistributedTransaction/Test2.tla +++ b/DistributedTransaction/Test2.tla @@ -4,9 +4,10 @@ EXTENDS DistributedTransaction, TLC CONSTANT k1, k2, k3 CONSTANT c1, c2, c3 -Key == {k1, k2, k3} +Keys == {k1, k2, k3} OptimistiicClient == {c3} PessimisticClient == {c1, c2} -ClientKey == c1 :> {k1, k2, k3} @@ c2 :> {k1, k2} @@ c3 :> {k1, k3} +ClientReadKeys == c1 :> {} @@ c2 :> {} @@ c3 :> {k1, k3} +ClientWriteKeys == c1 :> {k1, k2, k3} @@ c2 :> {k1, k2} @@ c3 :> {k1, k3} ClientPrimary == c1 :> k1 @@ c2 :> k1 @@ c3 :> k3 ================================================================================ diff --git a/DistributedTransaction/Test3.cfg b/DistributedTransaction/Test3.cfg new file mode 100644 index 0000000..9ec8364 --- /dev/null +++ b/DistributedTransaction/Test3.cfg @@ -0,0 +1,31 @@ +CONSTANT + k1 = k1 + k2 = k2 + c1 = c1 + c2 = c2 + +CONSTANT + KEY <- Keys + OPTIMISTIC_CLIENT <- OptimistiicClient + PESSIMISTIC_CLIENT <- PessimisticClient + CLIENT_READ_KEY <- ClientReadKeys + CLIENT_WRITE_KEY <- ClientWriteKeys + CLIENT_PRIMARY <- ClientPrimary + +INIT + Init + +NEXT + Next + +INVARIANT + TypeOK + UniqueCommitOrAbort + CommitConsistency + AbortConsistency + WriteConsistency + UniqueLockOrWrite + UniqueWrite + OptimisticReadSnapshotIsolation + PessimisticReadSnapshotIsolation + MsgTsConsistency diff --git a/DistributedTransaction/Test3.tla b/DistributedTransaction/Test3.tla new file mode 100644 index 0000000..f9ba94b --- /dev/null +++ b/DistributedTransaction/Test3.tla @@ -0,0 +1,13 @@ +--------------------------------- MODULE Test3 --------------------------------- +EXTENDS DistributedTransaction, TLC + +CONSTANT k1, k2 +CONSTANT c1, c2 + +Keys == {k1, k2} +OptimistiicClient == {c2} +PessimisticClient == {c1} +ClientReadKeys == c1 :> {} @@ c2 :> {k1, k2} +ClientWriteKeys == c1 :> {k1, k2} @@ c2 :> {k1, k2} +ClientPrimary == c1 :> k1 @@ c2 :> k1 +================================================================================ diff --git a/DistributedTransaction/Test4.cfg b/DistributedTransaction/Test4.cfg new file mode 100644 index 0000000..fff2207 --- /dev/null +++ b/DistributedTransaction/Test4.cfg @@ -0,0 +1,30 @@ +CONSTANT + k1 = k1 + c1 = c1 + c2 = c2 + +CONSTANT + KEY <- Keys + OPTIMISTIC_CLIENT <- OptimistiicClient + PESSIMISTIC_CLIENT <- PessimisticClient + CLIENT_READ_KEY <- ClientReadKeys + CLIENT_WRITE_KEY <- ClientWriteKeys + CLIENT_PRIMARY <- ClientPrimary + +INIT + Init + +NEXT + Next + +INVARIANT + TypeOK + UniqueCommitOrAbort + CommitConsistency + AbortConsistency + WriteConsistency + UniqueLockOrWrite + UniqueWrite + OptimisticReadSnapshotIsolation + PessimisticReadSnapshotIsolation + MsgTsConsistency diff --git a/DistributedTransaction/Test4.tla b/DistributedTransaction/Test4.tla new file mode 100644 index 0000000..7878525 --- /dev/null +++ b/DistributedTransaction/Test4.tla @@ -0,0 +1,13 @@ +--------------------------------- MODULE Test3 --------------------------------- +EXTENDS DistributedTransaction, TLC + +CONSTANT k1 +CONSTANT c1, c2 + +Keys == {k1} +OptimistiicClient == {c2} +PessimisticClient == {c1} +ClientReadKeys == c1 :> {} @@ c2 :> {k1} +ClientWriteKeys == c1 :> {k1} @@ c2 :> {k1} +ClientPrimary == c1 :> k1 @@ c2 :> k1 +================================================================================ diff --git a/DistributedTransaction/Test5.cfg b/DistributedTransaction/Test5.cfg new file mode 100644 index 0000000..0949218 --- /dev/null +++ b/DistributedTransaction/Test5.cfg @@ -0,0 +1,33 @@ +CONSTANT + k1 = k1 + k2 = k2 + k3 = k3 + c1 = c1 + c2 = c2 + c3 = c3 + +CONSTANT + KEY <- Keys + OPTIMISTIC_CLIENT <- OptimistiicClient + PESSIMISTIC_CLIENT <- PessimisticClient + CLIENT_READ_KEY <- ClientReadKeys + CLIENT_WRITE_KEY <- ClientWriteKeys + CLIENT_PRIMARY <- ClientPrimary + +INIT + Init + +NEXT + Next + +INVARIANT + TypeOK + UniqueCommitOrAbort + CommitConsistency + AbortConsistency + WriteConsistency + UniqueLockOrWrite + UniqueWrite + OptimisticReadSnapshotIsolation + PessimisticReadSnapshotIsolation + MsgTsConsistency diff --git a/DistributedTransaction/Test5.tla b/DistributedTransaction/Test5.tla new file mode 100644 index 0000000..a5e076c --- /dev/null +++ b/DistributedTransaction/Test5.tla @@ -0,0 +1,13 @@ +--------------------------------- MODULE Test5 --------------------------------- +EXTENDS DistributedTransaction, TLC + +CONSTANT k1, k2, k3 +CONSTANT c1, c2, c3 + +Keys == {k1, k2, k3} +OptimistiicClient == {c3} +PessimisticClient == {c1, c2} +ClientReadKeys == c1 :> {} @@ c2 :> {} @@ c3 :> {k1, k3} +ClientWriteKeys == c1 :> {k1, k2, k3} @@ c2 :> {k1, k2} @@ c3 :> {k2, k3} +ClientPrimary == c1 :> k1 @@ c2 :> k1 @@ c3 :> k3 +================================================================================