From d51994509807804de2206fcced6d096077363439 Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Tue, 11 Nov 2025 18:17:04 +0400 Subject: [PATCH] make ArenaBuffer unsafe Send + Sync --- bindings/javascript/sync/src/js_protocol_io.rs | 4 ++-- bindings/javascript/sync/src/lib.rs | 3 ++- core/io/completions.rs | 3 --- core/io/memory.rs | 3 +-- sync/engine/src/database_sync_engine.rs | 6 ++++++ sync/engine/src/database_sync_operations.rs | 4 +++- sync/engine/src/protocol_io.rs | 2 +- 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/bindings/javascript/sync/src/js_protocol_io.rs b/bindings/javascript/sync/src/js_protocol_io.rs index 384635856..754bbe089 100644 --- a/bindings/javascript/sync/src/js_protocol_io.rs +++ b/bindings/javascript/sync/src/js_protocol_io.rs @@ -242,7 +242,7 @@ impl ProtocolIO for JsProtocolIo { })) } - fn add_work(&self, callback: Box bool + Send + Sync>) { + fn add_work(&self, callback: Box bool + Send>) { let mut work = self.work.lock().unwrap(); work.push_back(callback); } @@ -270,7 +270,7 @@ impl ProtocolIO for JsProtocolIo { #[napi] pub struct JsProtocolIo { requests: Mutex>, - work: Mutex bool + Send + Sync>>>, + work: Mutex bool + Send>>>, } impl Default for JsProtocolIo { diff --git a/bindings/javascript/sync/src/lib.rs b/bindings/javascript/sync/src/lib.rs index 6951f2821..ae133580f 100644 --- a/bindings/javascript/sync/src/lib.rs +++ b/bindings/javascript/sync/src/lib.rs @@ -307,7 +307,8 @@ impl SyncEngine { #[napi] pub fn protocol_io_step(&self) -> napi::Result<()> { - Ok(self.protocol()?.step_work()) + self.protocol()?.step_work(); + Ok(()) } #[napi] diff --git a/core/io/completions.rs b/core/io/completions.rs index 5d0e76cea..9e5ed605c 100644 --- a/core/io/completions.rs +++ b/core/io/completions.rs @@ -23,9 +23,6 @@ pub struct Completion { pub(super) inner: Option>, } -unsafe impl Send for Completion {} -unsafe impl Sync for Completion {} - #[derive(Debug, Default)] struct ContextInner { waker: Option, diff --git a/core/io/memory.rs b/core/io/memory.rs index f508524ae..4e3649e4e 100644 --- a/core/io/memory.rs +++ b/core/io/memory.rs @@ -252,8 +252,7 @@ impl File for MemoryFile { Ok(true) } else { Err(LimboError::InternalError(format!( - "ambigous has_hole result: pos={}, len={}, pages={}, holes={}", - pos, len, pages, holes + "ambigous has_hole result: pos={pos}, len={len}, pages={pages}, holes={holes}" ))) } } diff --git a/sync/engine/src/database_sync_engine.rs b/sync/engine/src/database_sync_engine.rs index 415be3f4a..18601feae 100644 --- a/sync/engine/src/database_sync_engine.rs +++ b/sync/engine/src/database_sync_engine.rs @@ -52,6 +52,12 @@ pub struct DataStats { pub read_bytes: AtomicUsize, } +impl Default for DataStats { + fn default() -> Self { + Self::new() + } +} + impl DataStats { pub fn new() -> Self { Self { diff --git a/sync/engine/src/database_sync_operations.rs b/sync/engine/src/database_sync_operations.rs index 1bd9372ff..67ac483b5 100644 --- a/sync/engine/src/database_sync_operations.rs +++ b/sync/engine/src/database_sync_operations.rs @@ -1585,6 +1585,8 @@ mod tests { chunk: usize, } + unsafe impl Sync for TestCompletion {} + impl DataCompletion for TestCompletion { type DataPollResult = TestPollResult; fn status(&self) -> crate::Result> { @@ -1626,7 +1628,7 @@ mod tests { let coro: Coro<()> = coro.into(); let mut bytes = BytesMut::new(); let mut count = 0; - let mut network_stats = DataStats::new(); + let network_stats = DataStats::new(); while wait_proto_message::<(), PageData>( &coro, &completion, diff --git a/sync/engine/src/protocol_io.rs b/sync/engine/src/protocol_io.rs index 35a580efd..b74cd772b 100644 --- a/sync/engine/src/protocol_io.rs +++ b/sync/engine/src/protocol_io.rs @@ -30,6 +30,6 @@ pub trait ProtocolIO: Send + Sync + 'static { body: Option>, headers: &[(&str, &str)], ) -> Result; - fn add_work(&self, callback: Box bool + Send + Sync>); + fn add_work(&self, callback: Box bool + Send>); fn step_work(&self); }