From 84d893198b2992f9ceb2a3082bf5560cbd0b0db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Sat, 26 Aug 2023 21:09:33 +0200 Subject: [PATCH 1/2] Revert "Replace Arc with Rc on clippy's suggestion" This reverts commit b050ae72de668f56b1d922cb0e2fe719a44cf6bc. --- clients/webassembly/src/storage/mod.rs | 7 +++---- clients/webassembly/src/tester/mod.rs | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/clients/webassembly/src/storage/mod.rs b/clients/webassembly/src/storage/mod.rs index febbd9ecd5..f4ab912657 100644 --- a/clients/webassembly/src/storage/mod.rs +++ b/clients/webassembly/src/storage/mod.rs @@ -1,8 +1,6 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use std::rc::Rc; - use crate::client::config::Config; use crate::storage::error::ClientStorageError; use js_sys::Promise; @@ -10,6 +8,7 @@ use nym_client_core::client::base_client::storage::gateway_details::PersistedGat use nym_crypto::asymmetric::{encryption, identity}; use nym_gateway_client::SharedKeys; use nym_sphinx::acknowledgements::AckKey; +use std::sync::Arc; use wasm_bindgen::prelude::*; use wasm_bindgen_futures::future_to_promise; use wasm_utils::storage::{IdbVersionChangeEvent, WasmStorage}; @@ -44,7 +43,7 @@ mod v1 { pub struct ClientStorage { #[allow(dead_code)] pub(crate) name: String, - pub(crate) inner: Rc, + pub(crate) inner: Arc, } #[wasm_bindgen] @@ -89,7 +88,7 @@ impl ClientStorage { .await?; Ok(ClientStorage { - inner: Rc::new(inner), + inner: Arc::new(inner), name, }) } diff --git a/clients/webassembly/src/tester/mod.rs b/clients/webassembly/src/tester/mod.rs index 6433c029c7..ba70062f3b 100644 --- a/clients/webassembly/src/tester/mod.rs +++ b/clients/webassembly/src/tester/mod.rs @@ -29,7 +29,6 @@ use nym_validator_client::client::IdentityKey; use nym_validator_client::QueryReqwestRpcNyxdClient; use rand::rngs::OsRng; use std::collections::HashSet; -use std::rc::Rc; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::{Arc, Mutex as SyncMutex}; use std::time::Duration; @@ -43,7 +42,7 @@ pub(crate) mod helpers; pub type NodeTestMessage = TestMessage; type LockedGatewayClient = - Rc>>; + Arc>>; pub(crate) const DEFAULT_TEST_TIMEOUT: Duration = Duration::from_secs(10); pub(crate) const DEFAULT_TEST_PACKETS: u32 = 20; @@ -211,7 +210,7 @@ impl NymNodeTesterBuilder { test_in_progress: Arc::new(AtomicBool::new(false)), current_test_nonce: Default::default(), tester: Arc::new(SyncMutex::new(tester)), - gateway_client: Rc::new(AsyncMutex::new(gateway_client)), + gateway_client: Arc::new(AsyncMutex::new(gateway_client)), processed_receiver: ReceivedReceiverWrapper::new(processed_receiver), _task_manager: task_manager, }) @@ -344,7 +343,7 @@ impl NymNodeTester { )); let processed_receiver_clone = self.processed_receiver.clone(); - let gateway_client_clone = Rc::clone(&self.gateway_client); + let gateway_client_clone = Arc::clone(&self.gateway_client); let tester_marker = TestMarker::new(Arc::clone(&self.test_in_progress)); // start doing async things (send packets and watch for anything coming back) From 2e7ddcb195da42b8dab2f32f20be1d29b5764a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Sat, 26 Aug 2023 21:49:14 +0200 Subject: [PATCH 2/2] Allow arc_with_non_send_sync in wasm client --- clients/webassembly/src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clients/webassembly/src/lib.rs b/clients/webassembly/src/lib.rs index af6d657940..a4d3aeaad4 100644 --- a/clients/webassembly/src/lib.rs +++ b/clients/webassembly/src/lib.rs @@ -1,6 +1,10 @@ // Copyright 2021-2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 +// After reading https://github.com/rust-lang/rust-clippy/issues/11382 +// I suspect we *maybe* have hit a false positive, but I'm not sure. +#![allow(clippy::arc_with_non_send_sync)] + use wasm_bindgen::prelude::*; #[cfg(target_arch = "wasm32")]