Skip to content

Commit

Permalink
Explicitly label dropped events
Browse files Browse the repository at this point in the history
Do this by identifying discontinuities in event_count.
  • Loading branch information
mullr committed Apr 17, 2024
1 parent b01216d commit aa70965
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/import/streaming.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ pub async fn import<R: Read + Send>(mut r: R, cfg: TraceRecorderConfig) -> Resul
let mut time_rollover_tracker = StreamingInstant::zero();
let mut importer = StreamingImporter::begin(client, cfg.clone(), &trd).await?;

let mut last_event_count: Option<u16> = None;

while let Some((event_code, event)) = trd.read_event(&mut r)? {
let mut attrs = HashMap::new();

Expand All @@ -57,6 +59,30 @@ pub async fn import<R: Read + Send>(mut r: R, cfg: TraceRecorderConfig) -> Resul
let parameter_count = event_code.parameter_count();

let event_count = event.event_count();
// TraceStart is supposed to have strange behavior w.r.t. event count, in some versions.
if event_type != EventType::TraceStart {
if let Some(last) = last_event_count {
let last = last as u32;
let event_count: u16 = event_count.into();
let mut event_count_for_diff = event_count as u32;

// rollover handling
while event_count_for_diff <= last {
event_count_for_diff += u16::MAX as u32 + 1;
}

let diff = event_count as u32 - last;
if diff > 1 {
attrs.insert(
importer.event_key(EventAttrKey::DroppedEvents).await?,
diff.into(),
);
}
}

last_event_count = Some(event_count.into());
}

let timer_ticks = event.timestamp();
let timestamp = time_rollover_tracker.elapsed(timer_ticks);

Expand Down
5 changes: 5 additions & 0 deletions src/streaming/attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,18 @@ pub enum EventAttrKey {

#[display(fmt = "event.internal.trace_recorder.id")]
EventId,

#[display(fmt = "event.internal.trace_recorder.event_count")]
EventCount,

#[display(fmt = "event.internal.trace_recorder.parameter_count")]
ParameterCount,

#[display(fmt = "event.internal.trace_recorder.timer.ticks")]
TimerTicks,

#[display(fmt = "event.trace_recorder.dropped_preceding_events")]
DroppedEvents,
}

impl From<CommonEventAttrKey> for EventAttrKey {
Expand Down

0 comments on commit aa70965

Please sign in to comment.