feat(rustproxy-http): add protocol failure suppression, h3 fallback escalation, and protocol cache metrics exposure
This commit is contained in:
@@ -31,6 +31,8 @@ pub struct Metrics {
|
||||
pub total_udp_sessions: u64,
|
||||
pub total_datagrams_in: u64,
|
||||
pub total_datagrams_out: u64,
|
||||
// Protocol detection cache snapshot (populated by RustProxy from HttpProxyService)
|
||||
pub detected_protocols: Vec<ProtocolCacheEntryMetric>,
|
||||
}
|
||||
|
||||
/// Per-route metrics.
|
||||
@@ -76,6 +78,25 @@ pub struct BackendMetrics {
|
||||
pub h2_failures: u64,
|
||||
}
|
||||
|
||||
/// Protocol cache entry for metrics/UI display.
|
||||
/// Populated from the HTTP proxy service's protocol detection cache.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ProtocolCacheEntryMetric {
|
||||
pub host: String,
|
||||
pub port: u16,
|
||||
pub domain: Option<String>,
|
||||
pub protocol: String,
|
||||
pub h3_port: Option<u16>,
|
||||
pub age_secs: u64,
|
||||
pub h2_suppressed: bool,
|
||||
pub h3_suppressed: bool,
|
||||
pub h2_cooldown_remaining_secs: Option<u64>,
|
||||
pub h3_cooldown_remaining_secs: Option<u64>,
|
||||
pub h2_consecutive_failures: Option<u32>,
|
||||
pub h3_consecutive_failures: Option<u32>,
|
||||
}
|
||||
|
||||
/// Statistics snapshot.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
@@ -824,6 +845,7 @@ impl MetricsCollector {
|
||||
total_udp_sessions: self.total_udp_sessions.load(Ordering::Relaxed),
|
||||
total_datagrams_in: self.total_datagrams_in.load(Ordering::Relaxed),
|
||||
total_datagrams_out: self.total_datagrams_out.load(Ordering::Relaxed),
|
||||
detected_protocols: vec![],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user