|
4 | 4 |
|
5 | 5 | use std::collections::BTreeMap; |
6 | 6 |
|
7 | | -use nodedb_types::calvin::PassiveReadKey; |
| 7 | +use nodedb_types::calvin::{PassiveReadKey, VersionedReadEntry}; |
8 | 8 | use nodedb_types::timeseries::continuous_agg::ContinuousAggregateDef; |
9 | 9 | use nodedb_types::{TenantId, Value}; |
10 | 10 |
|
@@ -303,19 +303,19 @@ pub enum MetaOp { |
303 | 303 | /// the wall clock independently. Wire-additive: defaults to 0 on decode |
304 | 304 | /// of older entries. |
305 | 305 | epoch_system_ms: i64, |
306 | | - /// Whether THIS node is the leader of the data-group owning this |
307 | | - /// vshard, stamped by the dispatching scheduler at dispatch time. |
308 | | - /// |
309 | | - /// OLLP determinism: the optimistic-lock verification (`actual != |
310 | | - /// predicted`) and the resulting `OllpRetryRequired` are LEADER-ONLY. |
311 | | - /// Followers trust the leader's verified decision and apply the carried |
312 | | - /// `ollp_predicted_surrogates` set verbatim, so every replica mutates |
313 | | - /// the identical surrogate set (Calvin determinism). This flag is a |
314 | | - /// per-node, non-replicated dispatch property — the scheduler on each |
315 | | - /// node stamps its OWN role; it is never part of the replicated log. |
316 | | - /// Wire-additive: defaults to `false` on decode of older entries (safe: |
317 | | - /// a follower-style apply against the carried predicted set). |
| 306 | + /// Whether THIS node is the leader of the data-group owning this vshard, |
| 307 | + /// stamped by the dispatching scheduler. OLLP verification (`actual != |
| 308 | + /// predicted` → `OllpRetryRequired`) is leader-only; followers apply the |
| 309 | + /// carried `ollp_predicted_surrogates` verbatim so every replica mutates |
| 310 | + /// the identical set (Calvin determinism). Per-node, never replicated. |
| 311 | + /// Wire-additive: defaults to `false` on decode of older entries. |
318 | 312 | is_group_leader: bool, |
| 313 | + /// The transaction's LSN-versioned read-set from the replicated `TxClass`. |
| 314 | + /// Each participant checks its own vShard's reads at apply and records |
| 315 | + /// whether they were still current, without gating apply. Wire-additive: |
| 316 | + /// defaults to empty on decode of older entries. |
| 317 | + #[serde(default)] |
| 318 | + versioned_reads: Vec<VersionedReadEntry>, |
319 | 319 | }, |
320 | 320 |
|
321 | 321 | /// Calvin dependent-read executor: passive participant reads keys and |
|
0 commit comments