missing loop
This commit is contained in:
parent
12ee26a2b3
commit
94f205900a
|
@ -121,12 +121,12 @@ impl ProxyResponseStat {
|
||||||
let backend_requests = metadata.backend_requests.load(Ordering::Acquire);
|
let backend_requests = metadata.backend_requests.load(Ordering::Acquire);
|
||||||
let period_seconds = metadata.period_seconds;
|
let period_seconds = metadata.period_seconds;
|
||||||
let period_timestamp =
|
let period_timestamp =
|
||||||
(metadata.datetime.timestamp() as u64) / period_seconds * period_seconds;
|
(metadata.start_datetime.timestamp() as u64) / period_seconds * period_seconds;
|
||||||
let request_bytes = metadata.request_bytes;
|
let request_bytes = metadata.request_bytes;
|
||||||
let error_response = metadata.error_response.load(Ordering::Acquire);
|
let error_response = metadata.error_response.load(Ordering::Acquire);
|
||||||
|
|
||||||
let response_millis =
|
// TODO: timestamps could get confused by leap seconds. need tokio time instead
|
||||||
(Utc::now().timestamp_millis() - metadata.datetime.timestamp_millis()) as u64;
|
let response_millis = metadata.start_instant.elapsed().as_millis() as u64;
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
user_key_id: authorized_key.user_key_id,
|
user_key_id: authorized_key.user_key_id,
|
||||||
|
@ -197,29 +197,31 @@ impl StatEmitter {
|
||||||
aggregate_rx: flume::Receiver<Web3ProxyStat>,
|
aggregate_rx: flume::Receiver<Web3ProxyStat>,
|
||||||
mut shutdown_receiver: broadcast::Receiver<()>,
|
mut shutdown_receiver: broadcast::Receiver<()>,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
// TODO: select on shutdown handle so we can be sure to save every aggregate!
|
loop {
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
x = aggregate_rx.recv_async() => {
|
x = aggregate_rx.recv_async() => {
|
||||||
match x {
|
match x {
|
||||||
Ok(x) => {
|
Ok(x) => {
|
||||||
trace!(?x, "aggregating stat");
|
trace!(?x, "aggregating stat");
|
||||||
|
|
||||||
// TODO: increment global stats (in redis? in local cache for prometheus?)
|
// TODO: increment global stats (in redis? in local cache for prometheus?)
|
||||||
|
|
||||||
// TODO: batch stats?
|
// TODO: batch stats?
|
||||||
// TODO: where can we wait on this handle?
|
// TODO: where can we wait on this handle?
|
||||||
let clone = self.clone();
|
let clone = self.clone();
|
||||||
tokio::spawn(async move { clone.aggregate_stat(x).await });
|
tokio::spawn(async move { clone.aggregate_stat(x).await });
|
||||||
},
|
},
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
error!(?err, "aggregate_rx");
|
error!(?err, "aggregate_rx");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
x = shutdown_receiver.recv() => {
|
||||||
x = shutdown_receiver.recv() => {
|
match x {
|
||||||
match x {
|
Ok(_) => info!("aggregate stats loop shutting down"),
|
||||||
Ok(_) => info!("aggregate stats loop shutting down"),
|
Err(err) => error!(?err, "shutdown receiver"),
|
||||||
Err(err) => error!(?err, "shutdown receiver"),
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue