KVSRead¶
- from Shard
Purpose¶
Executors have to read data from keys to execute TransactionCandidates. When a Shard has determined what the value read is at the appropriate timestamp, it sends a KVSRead to the appropriate Executor.
Structure¶
Field | Type | Description |
---|---|---|
timestamp |
TxFingerprint | the timestamp at which the datum was read |
key |
KVSKey | the key from which the datum is read |
data |
KVSDatum | the datum read |
The timestamp should match the timestamp of the TransactionCandidate for this Executor.
Effects¶
These read values are input for the TransactionExecutable. Some may be lazy inputs, and some may never be used, but they're all inputs. If this lets us finish the TransactionExecutable, it may trigger KVSWrites (outputs of the executable), and shutting down the Executor entirely.
Triggers¶
- to Shard: KVSWrite
for each
value the TransactionExecutable outputs to write send a KVSWrite message to the appropriate Shard - to Shard: KVSReadRequest
for each
lazy read the TransactionExecutable now requires, and each lazy read the TransactionExecutable hasn't read when it terminates: send a KVSReadRequest message to the appropriate Shard - to Worker Engine: ExecutorFinished
If
TransactionExecutable has terminatedthen
notify thecurator
specified in ExecuteTransaction
that the transaction is done with an ExecutorFinished. - to User,Solver: ExecutionSummary The issuer of the transaction request is always provided with the ExecutionSummary