fix(bonfire): ignore all Redis errors but Canceled
This commit is contained in:
@@ -3,6 +3,7 @@ use std::{collections::HashSet, net::SocketAddr, sync::Arc};
|
|||||||
use async_tungstenite::WebSocketStream;
|
use async_tungstenite::WebSocketStream;
|
||||||
use authifier::AuthifierEvent;
|
use authifier::AuthifierEvent;
|
||||||
use fred::{
|
use fred::{
|
||||||
|
error::{RedisError, RedisErrorKind},
|
||||||
interfaces::{ClientLike, EventInterface, PubsubInterface},
|
interfaces::{ClientLike, EventInterface, PubsubInterface},
|
||||||
types::RedisConfig,
|
types::RedisConfig,
|
||||||
};
|
};
|
||||||
@@ -229,11 +230,14 @@ async fn listener(
|
|||||||
// Handle Redis connection dropping
|
// Handle Redis connection dropping
|
||||||
let (clean_up_s, clean_up_r) = async_channel::bounded(1);
|
let (clean_up_s, clean_up_r) = async_channel::bounded(1);
|
||||||
let clean_up_s = Arc::new(Mutex::new(clean_up_s));
|
let clean_up_s = Arc::new(Mutex::new(clean_up_s));
|
||||||
subscriber.on_error(move |_| {
|
subscriber.on_error(move |err| {
|
||||||
let clean_up_s = clean_up_s.clone();
|
if let RedisErrorKind::Canceled = err.kind() {
|
||||||
spawn(async move {
|
let clean_up_s = clean_up_s.clone();
|
||||||
clean_up_s.lock().await.send(()).await.ok();
|
spawn(async move {
|
||||||
});
|
clean_up_s.lock().await.send(()).await.ok();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user