Skip to content

Commit ec7c5ad

Browse files
authored
Clock sync followup (#214)
* Make pre-epoch system clock an explicit panic * Use same monotonic sample for SegmentMetadataEvent and ClockSyncEvent
1 parent c6183d4 commit ec7c5ad

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

dial9-tokio-telemetry/src/telemetry/events.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,8 @@ pub(crate) fn clock_realtime_ns() -> u64 {
409409
use std::time::{SystemTime, UNIX_EPOCH};
410410
SystemTime::now()
411411
.duration_since(UNIX_EPOCH)
412-
.map(|d| d.as_nanos() as u64)
413-
.unwrap_or(0)
412+
.expect("system clock should not be before the unix epoch")
413+
.as_nanos() as u64
414414
}
415415

416416
/// Snapshot `(monotonic_ns, realtime_ns)` as close together as possible.

dial9-tokio-telemetry/src/telemetry/writer.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use dial9_trace_format::encoder::{Encoder, RawEncoder};
22

33
use crate::rate_limit::rate_limited;
44
use crate::telemetry::collector::Batch;
5-
use crate::telemetry::events::{clock_monotonic_ns, clock_pair};
5+
use crate::telemetry::events::clock_pair;
66
use crate::telemetry::format::{ClockSyncEvent, SegmentMetadataEvent};
77
use std::collections::VecDeque;
88
use std::fs::{self, File};
@@ -277,11 +277,11 @@ impl RotatingWriter {
277277
) -> std::io::Result<RawEncoder<BufWriter<File>>> {
278278
let mut encoder = Encoder::new_to(writer)?;
279279
let entries = segment_metadata.to_vec();
280+
let (mono, real) = clock_pair();
280281
encoder.write(&SegmentMetadataEvent {
281-
timestamp_ns: clock_monotonic_ns(),
282+
timestamp_ns: mono,
282283
entries,
283284
})?;
284-
let (mono, real) = clock_pair();
285285
encoder.write(&ClockSyncEvent {
286286
timestamp_ns: mono,
287287
realtime_ns: real,
@@ -297,11 +297,11 @@ impl RotatingWriter {
297297
};
298298
let entries = self.segment_metadata.clone();
299299
let mut enc = Encoder::new();
300+
let (mono, real) = clock_pair();
300301
enc.write(&SegmentMetadataEvent {
301-
timestamp_ns: clock_monotonic_ns(),
302+
timestamp_ns: mono,
302303
entries,
303304
})?;
304-
let (mono, real) = clock_pair();
305305
enc.write(&ClockSyncEvent {
306306
timestamp_ns: mono,
307307
realtime_ns: real,

0 commit comments

Comments
 (0)