File size: 1,506 Bytes
52a9af3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | //! Request counts exclude disabled plugins, account-switch discards, and cancellations.
//! Auth retries keep the furthest request outcome reached; each completed wait/load is timed.
//! Skill-snapshot lookups are not requests. Clear events include already-empty caches.
//! Tags never contain configuration data.
use std::time::Duration;
pub(crate) const LOAD_DURATION: &str = "codex.plugins.loaded_cache.load.duration_ms";
pub(crate) const WAIT_DURATION: &str = "codex.plugins.loaded_cache.wait.duration_ms";
pub(crate) enum RequestOutcome {
Hit,
HitAfterWait,
Load,
}
impl RequestOutcome {
pub(crate) fn record(self) {
let Some(metrics) = codex_otel::global() else {
return;
};
let outcome = match self {
Self::Hit => "hit",
Self::HitAfterWait => "hit_after_wait",
Self::Load => "load",
};
let _ = metrics.counter(
"codex.plugins.loaded_cache.request",
/*inc*/ 1,
&[("outcome", outcome)],
);
}
}
pub(crate) fn record_duration(name: &'static str, duration: Duration) {
if let Some(metrics) = codex_otel::global() {
let _ = metrics.record_duration(name, duration, &[]);
}
}
pub(crate) fn record_event(event: &'static str) {
if let Some(metrics) = codex_otel::global() {
let _ = metrics.counter(
"codex.plugins.loaded_cache.event",
/*inc*/ 1,
&[("event", event)],
);
}
}
|