mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
fix: accept concurrent prometheus connections (#9459)
This commit is contained in:
@ -2,7 +2,6 @@
|
||||
|
||||
use crate::metrics::version_metrics::VersionInfo;
|
||||
use eyre::WrapErr;
|
||||
use futures::{future::FusedFuture, FutureExt};
|
||||
use http::Response;
|
||||
use metrics::describe_gauge;
|
||||
use metrics_exporter_prometheus::{PrometheusBuilder, PrometheusHandle};
|
||||
@ -65,14 +64,18 @@ async fn start_endpoint<F: Hook + 'static>(
|
||||
let listener =
|
||||
tokio::net::TcpListener::bind(listen_addr).await.wrap_err("Could not bind to address")?;
|
||||
|
||||
task_executor.spawn_with_graceful_shutdown_signal(|signal| async move {
|
||||
let mut shutdown = signal.ignore_guard().fuse();
|
||||
task_executor.spawn_with_graceful_shutdown_signal(|mut signal| async move {
|
||||
loop {
|
||||
let io = match listener.accept().await {
|
||||
Ok((stream, _remote_addr)) => stream,
|
||||
Err(err) => {
|
||||
tracing::error!(%err, "failed to accept connection");
|
||||
continue;
|
||||
let io = tokio::select! {
|
||||
_ = &mut signal => break,
|
||||
io = listener.accept() => {
|
||||
match io {
|
||||
Ok((stream, _remote_addr)) => stream,
|
||||
Err(err) => {
|
||||
tracing::error!(%err, "failed to accept connection");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -84,15 +87,15 @@ async fn start_endpoint<F: Hook + 'static>(
|
||||
async move { Ok::<_, Infallible>(Response::new(metrics)) }
|
||||
});
|
||||
|
||||
if let Err(error) =
|
||||
jsonrpsee::server::serve_with_graceful_shutdown(io, service, &mut shutdown).await
|
||||
{
|
||||
tracing::debug!(%error, "failed to serve request")
|
||||
}
|
||||
|
||||
if shutdown.is_terminated() {
|
||||
break;
|
||||
}
|
||||
let mut shutdown = signal.clone().ignore_guard();
|
||||
tokio::task::spawn(async move {
|
||||
if let Err(error) =
|
||||
jsonrpsee::server::serve_with_graceful_shutdown(io, service, &mut shutdown)
|
||||
.await
|
||||
{
|
||||
tracing::debug!(%error, "failed to serve request")
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user