feat: wire up storage latency metrics, uptime gauge, and config timeouts
Instrument DeliveryService (enqueue, fetch) and KeyService (key_package_upload, key_package_fetch) with storage latency histogram recording. Add periodic uptime gauge task (every 15s). Log effective rpc_timeout_secs, storage_timeout_secs, and webtransport_listen at startup to eliminate dead_code warnings on EffectiveConfig fields.
This commit is contained in:
@@ -80,12 +80,14 @@ impl DeliveryService {
|
||||
let mut first_seq = 0;
|
||||
|
||||
for (i, dk) in device_keys.iter().enumerate() {
|
||||
let start = std::time::Instant::now();
|
||||
let seq = self.store.enqueue(
|
||||
dk,
|
||||
&req.channel_id,
|
||||
req.payload.clone(),
|
||||
ttl,
|
||||
)?;
|
||||
crate::metrics::record_storage_latency("enqueue", start.elapsed());
|
||||
if i == 0 {
|
||||
first_seq = seq;
|
||||
}
|
||||
@@ -106,12 +108,14 @@ impl DeliveryService {
|
||||
/// The `recipient_key` should be the device-scoped composite key
|
||||
/// (`identity_key + device_id`) or bare `identity_key` for single-device.
|
||||
pub fn fetch(&self, req: FetchReq) -> Result<FetchResp, crate::storage::StorageError> {
|
||||
let start = std::time::Instant::now();
|
||||
let messages = if req.limit > 0 {
|
||||
self.store
|
||||
.fetch_limited(&req.recipient_key, &req.channel_id, req.limit as usize)?
|
||||
} else {
|
||||
self.store.fetch(&req.recipient_key, &req.channel_id)?
|
||||
};
|
||||
crate::metrics::record_storage_latency("fetch", start.elapsed());
|
||||
|
||||
Ok(FetchResp {
|
||||
payloads: messages
|
||||
|
||||
Reference in New Issue
Block a user