Detect sequence gaps (events dropped by the producer due to buffer overflow).
(
core_id: usize,
event: &WriteEvent,
last_sequence: u64,
metrics: &CoreMetrics,
)
| 25 | |
| 26 | /// Detect sequence gaps (events dropped by the producer due to buffer overflow). |
| 27 | pub fn detect_sequence_gap( |
| 28 | core_id: usize, |
| 29 | event: &WriteEvent, |
| 30 | last_sequence: u64, |
| 31 | metrics: &CoreMetrics, |
| 32 | ) { |
| 33 | if last_sequence > 0 && event.sequence > last_sequence + 1 { |
| 34 | let gap = event.sequence - last_sequence - 1; |
| 35 | metrics.record_drop(gap); |
| 36 | warn!( |
| 37 | core_id, |
| 38 | gap, |
| 39 | last_seq = last_sequence, |
| 40 | new_seq = event.sequence, |
| 41 | "event sequence gap — {gap} events dropped (WAL replay needed)" |
| 42 | ); |
| 43 | } |
| 44 | } |
| 45 | |
| 46 | /// Process a single event. Dispatch point for trigger matching, CDC, etc. |
| 47 | pub fn record_event(core_id: usize, event: &WriteEvent, metrics: &CoreMetrics) { |