Skip to content

Commit e742bf8

Browse files
committed
fix(transport): make full-frame ingest fail closed
1 parent f96f829 commit e742bf8

3 files changed

Lines changed: 251 additions & 46 deletions

File tree

‎control_plane/src/physical/compiler.rs‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,10 @@ pub struct SummaryFrameIdentity {
595595
pub schema_id: String,
596596
pub producer_id: String,
597597
pub producer_epoch: String,
598+
/// Canonical identity of the output series inside the materialization.
599+
/// This remains stable when the sender switches between attribute-bearing
600+
/// and SID-only frames, and prevents two series from sharing a receipt.
601+
pub series_fingerprint: String,
598602
pub window_start_unix_nano: u64,
599603
pub window_end_unix_nano: u64,
600604
pub sequence: u64,
@@ -721,6 +725,7 @@ impl TransmissionPlan {
721725
|| frame.plan_version != self.envelope.plan_version
722726
|| frame.backend_compat != self.envelope.backend_compat
723727
|| frame.producer_epoch.is_empty()
728+
|| frame.series_fingerprint.is_empty()
724729
|| frame.sequence == 0
725730
|| frame.window_start_unix_nano >= frame.window_end_unix_nano
726731
|| (frame.kind == SummaryFrameKind::Full
@@ -1574,6 +1579,7 @@ mod tests {
15741579
schema_id: rule.schema_id.clone(),
15751580
producer_id: rule.producer_id.clone(),
15761581
producer_epoch: "boot-1".into(),
1582+
series_fingerprint: "service=api".into(),
15771583
window_start_unix_nano: 1,
15781584
window_end_unix_nano: 2,
15791585
sequence: 1,

0 commit comments

Comments
 (0)