From 93e05e9f18e3790a227cbf0bf46bc478735967c5 Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Thu, 20 Jun 2024 22:12:00 +0100 Subject: [PATCH] fix(bonfire): ignore all Redis errors but `Canceled` --- crates/bonfire/src/websocket.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/bonfire/src/websocket.rs b/crates/bonfire/src/websocket.rs index a44e6df2..d84824b8 100644 --- a/crates/bonfire/src/websocket.rs +++ b/crates/bonfire/src/websocket.rs @@ -3,6 +3,7 @@ use std::{collections::HashSet, net::SocketAddr, sync::Arc}; use async_tungstenite::WebSocketStream; use authifier::AuthifierEvent; use fred::{ + error::{RedisError, RedisErrorKind}, interfaces::{ClientLike, EventInterface, PubsubInterface}, types::RedisConfig, }; @@ -229,11 +230,14 @@ async fn listener( // Handle Redis connection dropping let (clean_up_s, clean_up_r) = async_channel::bounded(1); let clean_up_s = Arc::new(Mutex::new(clean_up_s)); - subscriber.on_error(move |_| { - let clean_up_s = clean_up_s.clone(); - spawn(async move { - clean_up_s.lock().await.send(()).await.ok(); - }); + subscriber.on_error(move |err| { + if let RedisErrorKind::Canceled = err.kind() { + let clean_up_s = clean_up_s.clone(); + spawn(async move { + clean_up_s.lock().await.send(()).await.ok(); + }); + } + Ok(()) });