improve Server::run

This commit is contained in:
2025-06-18 13:17:45 +02:00
parent 0b0449e995
commit 51fdaa4120

View File

@@ -43,25 +43,27 @@ impl Server {
pub async fn run(&mut self, mut shutdown: oneshot::Receiver<()>) -> Result<()> { pub async fn run(&mut self, mut shutdown: oneshot::Receiver<()>) -> Result<()> {
let shutdown = &mut shutdown; let shutdown = &mut shutdown;
let result = tokio::select! {
biased;
v = self._run() => v,
_ = &mut *shutdown => Ok(()),
};
log::info!("Shutting down");
self.db.shutdown().await;
let _ = (&mut self.expiration_manager_handle).await;
result
}
pub async fn _run(&mut self) -> Result<()> {
loop { loop {
let permit = Arc::clone(&self.connection_limit) let permit = Arc::clone(&self.connection_limit)
.acquire_owned() .acquire_owned()
.await .await
.unwrap(); .unwrap();
let Some(socket) = ({ let socket = self.listener.accept().await?.0;
tokio::select! {
socket = self.listener.accept() => Some(socket?.0),
_ = &mut *shutdown => None,
}
}) else {
log::info!("Shutting down");
self.db.shutdown().await;
let _ = (&mut self.expiration_manager_handle).await;
return Ok(());
};
let addr = socket.peer_addr()?; let addr = socket.peer_addr()?;
@@ -71,7 +73,7 @@ impl Server {
tokio::spawn(async move { tokio::spawn(async move {
log::debug!("Spawned a new connection handler: {addr}"); log::debug!("Spawned a new connection handler: {addr}");
if let Err(e) = handler.run().await { if let Err(e) = handler.run().await {
log::debug!("Handler::run error: {e:?}"); log::error!("Handler::run: {e:?}");
} }
log::debug!("Connection handler ended: {addr}"); log::debug!("Connection handler ended: {addr}");