diff --git a/backend/sync_server/src/app_state/broadcasts.rs b/backend/sync_server/src/app_state/broadcasts.rs index 3e7d98cc..76740a5e 100644 --- a/backend/sync_server/src/app_state/broadcasts.rs +++ b/backend/sync_server/src/app_state/broadcasts.rs @@ -4,10 +4,7 @@ use anyhow::Context; use tokio::sync::{Mutex, broadcast}; use super::database::models::{DocumentVersionWithoutContent, VaultId}; -use crate::{ - config::server_config::ServerConfig, - errors::{SyncServerError, server_error}, -}; +use crate::{config::server_config::ServerConfig, errors::server_error}; #[derive(Debug, Clone)] pub struct Broadcasts { @@ -32,18 +29,17 @@ impl Broadcasts { tx.subscribe() } - pub async fn send( - &self, - vault: VaultId, - document: DocumentVersionWithoutContent, - ) -> Result<(), SyncServerError> { + pub async fn send(&self, vault: VaultId, document: DocumentVersionWithoutContent) { let tx = self.get_or_create(vault).await; - tx.send(document) + let result = tx + .send(document) .context("Cannot broadcast update message to websocket listeners") - .map_err(server_error)?; + .map_err(server_error); - Ok(()) + if result.is_err() { + log::debug!("Failed to send message: {result:?}"); + } } async fn get_or_create( diff --git a/backend/sync_server/src/server/create_document.rs b/backend/sync_server/src/server/create_document.rs index 8145acdd..826b37c6 100644 --- a/backend/sync_server/src/server/create_document.rs +++ b/backend/sync_server/src/server/create_document.rs @@ -146,7 +146,7 @@ async fn internal_create_document( state .broadcasts .send(vault_id, new_version.clone().into()) - .await?; + .await; Ok(Json(new_version.into())) } diff --git a/backend/sync_server/src/server/delete_document.rs b/backend/sync_server/src/server/delete_document.rs index c3567e5a..10fbca3c 100644 --- a/backend/sync_server/src/server/delete_document.rs +++ b/backend/sync_server/src/server/delete_document.rs @@ -75,7 +75,7 @@ pub async fn delete_document( state .broadcasts .send(vault_id, new_version.clone().into()) - .await?; + .await; Ok(Json(new_version.into())) } diff --git a/backend/sync_server/src/server/update_document.rs b/backend/sync_server/src/server/update_document.rs index 14a70118..0448ddb7 100644 --- a/backend/sync_server/src/server/update_document.rs +++ b/backend/sync_server/src/server/update_document.rs @@ -221,7 +221,7 @@ async fn internal_update_document( state .broadcasts .send(vault_id, new_version.clone().into()) - .await?; + .await; Ok(Json(if is_different_from_request_content { DocumentUpdateResponse::MergingUpdate(new_version.into()) diff --git a/backend/sync_server/src/server/websocket.rs b/backend/sync_server/src/server/websocket.rs index 787f1460..30125f41 100644 --- a/backend/sync_server/src/server/websocket.rs +++ b/backend/sync_server/src/server/websocket.rs @@ -123,6 +123,11 @@ async fn websocket( .context("Websocket send task failed") .map_err(server_error)??; + recv_task + .await + .context("Websocket receive task failed") + .map_err(server_error)?; + Ok(()) }