Skip to content

Commit 0146485

Browse files
committed
feat(node): Add metadata and tag fields to all event structures
- Added metadata: None and tag: 0 to KernelEvent::InsertRecord in: - events/event_commit.rs, event_log.rs, event_journal.rs, event_replay.rs - wal_writer.rs, wal_reader.rs, recovery.rs - All test files: fuzz_crash_recovery.rs, multi_arch_determinism.rs, etc. - Fixed import paths in deterministic test files - Added missing NodeConfig fields (event_log_path, mode) - Fixed Engine import in persistence_index_tests.rs - All node lib tests passing (22/22)
1 parent 8241004 commit 0146485

17 files changed

+59
-10
lines changed

node/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "0.1.0"
44
edition = "2021"
55

66
[dependencies]
7-
valori-kernel = { path = "../crates/kernel" }
7+
valori-kernel = { path = ".." }
88
tokio = { version = "1.0", features = ["full"] }
99
axum = "0.7"
1010
tokio-util = { version = "0.7", features = ["io"] }

node/examples/crash_recovery_demo.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ fn main() {
3333
wal_path: Some(wal_path.clone()),
3434
auto_snapshot_interval_secs: None,
3535
auth_token: None,
36+
event_log_path: None,
37+
mode: valori_node::config::NodeMode::Leader,
3638
};
3739

3840
// Phase 1: Insert & Snapshot

node/src/engine.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ impl<const MAX_RECORDS: usize, const D: usize, const MAX_NODES: usize, const MAX
199199
if let Some(ref mut committer) = self.event_committer {
200200
let start = std::time::Instant::now();
201201
// Generate event (no state change yet)
202-
let event = KernelEvent::InsertRecord { id, vector };
202+
let event = KernelEvent::InsertRecord { id, vector, metadata: None, tag: 0 };
203203

204204
// Commit via event pipeline (shadow → persist → commit → live)
205205
// Clone event for local apply if needed
@@ -237,7 +237,7 @@ impl<const MAX_RECORDS: usize, const D: usize, const MAX_NODES: usize, const MAX
237237
Ok(id.0)
238238
} else {
239239
// Fallback: Legacy WAL path
240-
let cmd = Command::InsertRecord { id, vector };
240+
let cmd = Command::InsertRecord { id, vector, metadata: None, tag: 0 };
241241

242242
// Write to WAL FIRST
243243
if let Some(ref mut wal) = self.wal_writer {
@@ -326,7 +326,7 @@ impl<const MAX_RECORDS: usize, const D: usize, const MAX_NODES: usize, const MAX
326326
vector.data[i] = FxpScalar(fixed);
327327
}
328328

329-
events.push(KernelEvent::InsertRecord { id, vector });
329+
events.push(KernelEvent::InsertRecord { id, vector, metadata: None, tag: 0 });
330330
}
331331

332332
let start = std::time::Instant::now();
@@ -342,7 +342,7 @@ impl<const MAX_RECORDS: usize, const D: usize, const MAX_NODES: usize, const MAX
342342
for event in &events {
343343
self.state.apply_event(event).map_err(EngineError::Kernel)?;
344344

345-
if let KernelEvent::InsertRecord { id, vector } = event {
345+
if let KernelEvent::InsertRecord { id, vector, .. } = event {
346346
let mut consistent_values = Vec::with_capacity(D);
347347
for i in 0..D {
348348
let fxp = vector.data[i];
@@ -375,7 +375,7 @@ impl<const MAX_RECORDS: usize, const D: usize, const MAX_NODES: usize, const MAX
375375

376376
// 2. Update Auxiliary Structures (Side Effects)
377377
match event {
378-
KernelEvent::InsertRecord { id, vector } => {
378+
KernelEvent::InsertRecord { id, vector, .. } => {
379379
// Update Host Index
380380
let mut consistent_values = Vec::with_capacity(D);
381381
for i in 0..D {

node/src/errors.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ impl IntoResponse for EngineError {
2929
KernelError::InvalidOperation => (StatusCode::BAD_REQUEST, "Invalid operation".to_string()),
3030
KernelError::Overflow => (StatusCode::INTERNAL_SERVER_ERROR, "Numeric overflow".to_string()),
3131
KernelError::InvalidInput => (StatusCode::BAD_REQUEST, "Invalid input".to_string()),
32+
_ => (StatusCode::INTERNAL_SERVER_ERROR, "Kernel error".to_string()),
3233
},
3334
EngineError::InvalidInput(msg) => (StatusCode::BAD_REQUEST, msg),
3435
EngineError::Internal => (StatusCode::INTERNAL_SERVER_ERROR, "Internal server error".to_string()),

node/src/events/event_commit.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,8 @@ mod tests {
359359
let event = KernelEvent::InsertRecord {
360360
id: RecordId(0),
361361
vector: FxpVector::<16>::new_zeros(),
362+
metadata: None,
363+
tag: 0,
362364
};
363365

364366
let result = committer.commit_event(event).unwrap();
@@ -386,13 +388,17 @@ mod tests {
386388
let event1 = KernelEvent::InsertRecord {
387389
id: RecordId(0),
388390
vector: FxpVector::<16>::new_zeros(),
391+
metadata: None,
392+
tag: 0,
389393
};
390394
committer.commit_event(event1).unwrap();
391395

392396
// Try to insert duplicate ID (should fail shadow apply)
393397
let event2 = KernelEvent::InsertRecord {
394398
id: RecordId(0), // Same ID
395399
vector: FxpVector::<16>::new_zeros(),
400+
metadata: None,
401+
tag: 0,
396402
};
397403

398404
let result = committer.commit_event(event2).unwrap();
@@ -417,14 +423,20 @@ mod tests {
417423
KernelEvent::InsertRecord {
418424
id: RecordId(0),
419425
vector: FxpVector::<16>::new_zeros(),
426+
metadata: None,
427+
tag: 0,
420428
},
421429
KernelEvent::InsertRecord {
422430
id: RecordId(1),
423431
vector: FxpVector::<16>::new_zeros(),
432+
metadata: None,
433+
tag: 0,
424434
},
425435
KernelEvent::InsertRecord {
426436
id: RecordId(2),
427437
vector: FxpVector::<16>::new_zeros(),
438+
metadata: None,
439+
tag: 0,
428440
},
429441
];
430442

node/src/events/event_journal.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ mod tests {
167167
journal.append_buffered(KernelEvent::InsertRecord {
168168
id: RecordId(1),
169169
vector: FxpVector::<16>::new_zeros(),
170+
metadata: None,
171+
tag: 0,
170172
});
171173

172174
assert_eq!(journal.buffer_size(), 1);
@@ -188,6 +190,8 @@ mod tests {
188190
journal.append_buffered(KernelEvent::InsertRecord {
189191
id: RecordId(1),
190192
vector: FxpVector::<16>::new_zeros(),
193+
metadata: None,
194+
tag: 0,
191195
});
192196

193197
assert_eq!(journal.buffer_size(), 1);
@@ -205,10 +209,14 @@ mod tests {
205209
KernelEvent::InsertRecord {
206210
id: RecordId(1),
207211
vector: FxpVector::<16>::new_zeros(),
212+
metadata: None,
213+
tag: 0,
208214
},
209215
KernelEvent::InsertRecord {
210216
id: RecordId(2),
211217
vector: FxpVector::<16>::new_zeros(),
218+
metadata: None,
219+
tag: 0,
212220
},
213221
];
214222

@@ -226,6 +234,8 @@ mod tests {
226234
journal.append_buffered(KernelEvent::InsertRecord {
227235
id: RecordId(1),
228236
vector: FxpVector::<16>::new_zeros(),
237+
metadata: None,
238+
tag: 0,
229239
});
230240

231241
// Simulate: crash before commit (rollback)

node/src/events/event_log.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ mod tests {
321321
let event = KernelEvent::InsertRecord {
322322
id: RecordId(1),
323323
vector: FxpVector::<16>::new_zeros(),
324+
metadata: None,
325+
tag: 0,
324326
};
325327

326328
writer.append(&LogEntry::Event(event)).unwrap();
@@ -340,6 +342,8 @@ mod tests {
340342
let event = KernelEvent::InsertRecord {
341343
id: RecordId(i),
342344
vector: FxpVector::<16>::new_zeros(),
345+
metadata: None,
346+
tag: 0,
343347
};
344348
writer.append(&LogEntry::Event(event)).unwrap();
345349
}

node/src/events/event_replay.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@ mod tests {
264264
let event = KernelEvent::InsertRecord {
265265
id: RecordId(i),
266266
vector: FxpVector::<16>::new_zeros(),
267+
metadata: None,
268+
tag: 0,
267269
};
268270
writer.append(&crate::events::event_log::LogEntry::Event(event)).unwrap();
269271
}
@@ -293,6 +295,8 @@ mod tests {
293295
let event = KernelEvent::InsertRecord {
294296
id: RecordId(i),
295297
vector: FxpVector::<16>::new_zeros(),
298+
metadata: None,
299+
tag: 0,
296300
};
297301
writer.append(&crate::events::event_log::LogEntry::Event(event)).unwrap();
298302
}
@@ -345,6 +349,8 @@ mod tests {
345349
let event = KernelEvent::InsertRecord {
346350
id: RecordId(i),
347351
vector: FxpVector::<16>::new_zeros(),
352+
metadata: None,
353+
tag: 0,
348354
};
349355
writer.append(&crate::events::event_log::LogEntry::Event(event)).unwrap();
350356
}

node/src/recovery.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ mod tests {
168168
let cmd = Command::InsertRecord {
169169
id: RecordId(i),
170170
vector: FxpVector::<DIM>::new_zeros(),
171+
metadata: None,
172+
tag: 0,
171173
};
172174
writer.append_command(&cmd).unwrap();
173175
}

node/src/wal_reader.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ mod tests {
160160
let cmd = Command::InsertRecord {
161161
id: RecordId(1),
162162
vector: FxpVector::new_zeros(),
163+
metadata: None,
164+
tag: 0,
163165
};
164166
writer.append_command(&cmd).unwrap();
165167
}

0 commit comments

Comments
 (0)