v0.34.0_2

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-18 06:13:42 +02:00
1 parent 434e789144
commit 9cfc4588cc
18 files changed
+392 -121

No files matched your search

+14 -15
View File
@@ -176,30 +176,28 @@ impl Drop for Exchange {
_ => &self.metrics.status_5xx,
}
.fetch_add(1, Ordering::Relaxed);
// Final Arc drop has exclusive access: move strings without locking.
let backend = self
.backend
.lock()
.get_mut()
.unwrap_or_else(|e| e.into_inner())
.as_ref()
.map(|l| l.member.backend.id.clone());
let websocket_phase = *self
.websocket_phase
.lock()
.unwrap_or_else(|e| e.into_inner());
let route = self.route.lock().unwrap_or_else(|e| e.into_inner()).clone();
let websocket_phase = *self.websocket_phase.get_mut().unwrap_or_else(|e| e.into_inner());
let route = self.route.get_mut().unwrap_or_else(|e| e.into_inner()).take();
let source = ExchangeSource::name(self.source.load(Ordering::Relaxed));
let cache_effective_enabled = read_effective(self.cache_effective_enabled.load(Ordering::Relaxed));
let transform_effective_enabled = read_effective(self.transform_effective_enabled.load(Ordering::Relaxed));
let client_ip = self
.client_ip
.lock()
.get_mut()
.unwrap_or_else(|e| e.into_inner())
.clone();
.take();
let country = self
.country
.lock()
.get_mut()
.unwrap_or_else(|e| e.into_inner())
.clone();
.take();
let request_bytes = self.request_bytes.load(Ordering::Relaxed);
let response_bytes = self.response_bytes.load(Ordering::Relaxed);
let duration_ms = duration.as_millis() as u64;
@@ -248,7 +246,7 @@ impl Drop for Exchange {
sni: None,
authority: None,
matched_by: None,
cache_reason: *self.cache_reason.lock().unwrap_or_else(|e| e.into_inner()),
cache_reason: *self.cache_reason.get_mut().unwrap_or_else(|e| e.into_inner()),
vhost: self.vhost.take(),
route,
cache_effective_enabled,
@@ -266,18 +264,18 @@ impl Drop for Exchange {
websocket_phase,
websocket_error: *self
.websocket_error
.lock()
.get_mut()
.unwrap_or_else(|e| e.into_inner()),
h3_reset_code: *self.h3_reset_code.lock().unwrap_or_else(|e| e.into_inner()),
h3_reset_code: *self.h3_reset_code.get_mut().unwrap_or_else(|e| e.into_inner()),
upstream_status: match self.upstream_status.load(Ordering::Relaxed) {
0 => None,
value => Some(value),
},
upstream_error: self
.upstream_error
.lock()
.get_mut()
.unwrap_or_else(|e| e.into_inner())
.clone(),
.take(),
client_ip,
user_agent: self.user_agent.take(),
country,
@@ -290,6 +288,7 @@ impl Drop for Exchange {
});
}
}
#[derive(Clone, Copy)]
pub enum Direction {
Request,