From 1342f346b76f847edac360f1bfd519962cd0b8de Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Mon, 17 Feb 2025 15:52:26 -0800 Subject: [PATCH 1/6] all: Update diesel to latest version --- Cargo.lock | 13 ++++++------- Cargo.toml | 14 +++----------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c3b80fe7443..3226e8a27c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1196,9 +1196,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.2.4" +version = "2.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "158fe8e2e68695bd615d7e4f3227c0727b151330d3e253b525086c348d055d5e" +checksum = "04001f23ba8843dc315804fa324000376084dfb1c30794ff68dd279e6e5696d5" dependencies = [ "bigdecimal 0.3.1", "bitflags 2.6.0", @@ -1212,7 +1212,6 @@ dependencies = [ "pq-sys", "r2d2", "serde_json", - "uuid", ] [[package]] @@ -1229,18 +1228,18 @@ dependencies = [ [[package]] name = "diesel-dynamic-schema" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71eda9b13a55533594231b0763c36bc21058ccb82ed17eaeb41b3cbb897c1bb1" +checksum = "061bbe2d02508364c50153226524b7fc224f56031a5e927b0bc5f1f2b48de6a6" dependencies = [ "diesel", ] [[package]] name = "diesel_derives" -version = "2.2.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59de76a222c2b8059f789cbe07afbfd8deb8c31dd0bc2a21f85e256c1def8259" +checksum = "e7f2c3de51e2ba6bf2a648285696137aaf0f5f487bcbea93972fe8a364e131a4" dependencies = [ "diesel_table_macro_syntax", "dsl_auto_type", diff --git a/Cargo.toml b/Cargo.toml index 0cf70f16736..b01bc4d4fd1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,18 +47,10 @@ chrono = "0.4.38" bs58 = "0.5.1" clap = { version = "4.5.4", features = ["derive", "env"] } derivative = "2.2.0" -diesel = { version = "2.2.4", features = [ - "postgres", - "serde_json", - "numeric", - "r2d2", - "chrono", - "uuid", - "i-implement-a-third-party-backend-and-opt-into-breaking-changes", -] } +diesel = { version = "2.2.7", features = ["postgres", "serde_json", "numeric", "r2d2", "chrono", "i-implement-a-third-party-backend-and-opt-into-breaking-changes"] } diesel-derive-enum = { version = "2.1.0", features = ["postgres"] } -diesel-dynamic-schema = { version = "0.2.1", features = ["postgres"] } -diesel_derives = "2.1.4" +diesel-dynamic-schema = { version = "0.2.3", features = ["postgres"] } +diesel_derives = "2.2.3" diesel_migrations = "2.1.0" graph = { path = "./graph" } graph-core = { path = "./core" } From 4a2f4c4fc438dabb10a36004cdb374b6e7bba4cd Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Mon, 17 Feb 2025 16:15:07 -0800 Subject: [PATCH 2/6] runtime/wasm: Remove use of uuid --- Cargo.lock | 1 - runtime/wasm/Cargo.toml | 1 - runtime/wasm/src/mapping.rs | 7 +++++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3226e8a27c6..50214ad644f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2075,7 +2075,6 @@ dependencies = [ "parity-wasm", "semver", "serde_yaml", - "uuid", "wasm-instrument", "wasmtime", ] diff --git a/runtime/wasm/Cargo.toml b/runtime/wasm/Cargo.toml index c728f0bfb65..dfbd7983b1c 100644 --- a/runtime/wasm/Cargo.toml +++ b/runtime/wasm/Cargo.toml @@ -11,7 +11,6 @@ graph = { path = "../../graph" } bs58 = "0.4.0" graph-runtime-derive = { path = "../derive" } semver = "1.0.23" -uuid = { version = "1.15.1", features = ["v4"] } anyhow = "1.0" never = "0.1" diff --git a/runtime/wasm/src/mapping.rs b/runtime/wasm/src/mapping.rs index 8086051961a..c5678bf2aa2 100644 --- a/runtime/wasm/src/mapping.rs +++ b/runtime/wasm/src/mapping.rs @@ -12,6 +12,7 @@ use graph::runtime::gas::Gas; use parity_wasm::elements::ExportEntry; use std::collections::BTreeMap; use std::panic::AssertUnwindSafe; +use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; use std::{panic, thread}; @@ -28,6 +29,8 @@ pub fn spawn_module( where ::MappingTrigger: ToAscPtr, { + static THREAD_COUNT: AtomicUsize = AtomicUsize::new(0); + let valid_module = Arc::new(ValidModule::new(&logger, raw_module, timeout)?); // Create channel for event handling requests @@ -39,8 +42,8 @@ where // In case of failure, this thread may panic or simply terminate, // dropping the `mapping_request_receiver` which ultimately causes the // subgraph to fail the next time it tries to handle an event. - let conf = - thread::Builder::new().name(format!("mapping-{}-{}", &subgraph_id, uuid::Uuid::new_v4())); + let next_id = THREAD_COUNT.fetch_add(1, Ordering::SeqCst); + let conf = thread::Builder::new().name(format!("mapping-{}-{:0>4}", &subgraph_id, next_id)); conf.spawn(move || { let _runtime_guard = runtime.enter(); From 397a3f419603f14d961c1b9b058e6e5412351db0 Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Mon, 17 Feb 2025 16:18:51 -0800 Subject: [PATCH 3/6] chain/ethereum: Remove use of uuid --- Cargo.lock | 1 - chain/ethereum/Cargo.toml | 1 - chain/ethereum/src/network.rs | 29 ++++++++++------------------- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50214ad644f..a648e996f8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1929,7 +1929,6 @@ dependencies = [ "serde", "tiny-keccak 1.5.0", "tonic-build", - "uuid", ] [[package]] diff --git a/chain/ethereum/Cargo.toml b/chain/ethereum/Cargo.toml index 30378ec5586..43d1afb9bd3 100644 --- a/chain/ethereum/Cargo.toml +++ b/chain/ethereum/Cargo.toml @@ -22,7 +22,6 @@ graph-runtime-derive = { path = "../../runtime/derive" } [dev-dependencies] base64 = "0" -uuid = { version = "1.15.1", features = ["v4"] } [build-dependencies] tonic-build = { workspace = true } diff --git a/chain/ethereum/src/network.rs b/chain/ethereum/src/network.rs index 43b5a04b63a..d654db71276 100644 --- a/chain/ethereum/src/network.rs +++ b/chain/ethereum/src/network.rs @@ -325,7 +325,6 @@ mod tests { url::Url, }; use std::sync::Arc; - use uuid::Uuid; use crate::{EthereumAdapter, EthereumAdapterTrait, ProviderEthRpcMetrics, Transport}; @@ -679,18 +678,14 @@ mod tests { #[tokio::test] async fn eth_adapter_selection_multiple_adapters() { let logger = Logger::root(Discard, o!()); - let unavailable_provider = Uuid::new_v4().to_string(); - let error_provider = Uuid::new_v4().to_string(); - let no_error_provider = Uuid::new_v4().to_string(); + let unavailable_provider = "unavailable-provider"; + let error_provider = "error-provider"; + let no_error_provider = "no-error-provider"; let mock_registry = Arc::new(MetricsRegistry::mock()); let metrics = Arc::new(EndpointMetrics::new( logger, - &[ - unavailable_provider.clone(), - error_provider.clone(), - no_error_provider.clone(), - ], + &[unavailable_provider, error_provider, no_error_provider], mock_registry.clone(), )); let logger = graph::log::logger(true); @@ -718,7 +713,7 @@ mod tests { ]; // Set errors - metrics.report_for_test(&ProviderName::from(error_provider.clone()), false); + metrics.report_for_test(&ProviderName::from(error_provider), false); let mut no_retest_adapters = vec![]; let mut always_retest_adapters = vec![]; @@ -796,18 +791,14 @@ mod tests { #[tokio::test] async fn eth_adapter_selection_single_adapter() { let logger = Logger::root(Discard, o!()); - let unavailable_provider = Uuid::new_v4().to_string(); - let error_provider = Uuid::new_v4().to_string(); - let no_error_provider = Uuid::new_v4().to_string(); + let unavailable_provider = "unavailable-provider"; + let error_provider = "error-provider"; + let no_error_provider = "no-error-provider"; let mock_registry = Arc::new(MetricsRegistry::mock()); let metrics = Arc::new(EndpointMetrics::new( logger, - &[ - unavailable_provider, - error_provider.clone(), - no_error_provider.clone(), - ], + &[unavailable_provider, error_provider, no_error_provider], mock_registry.clone(), )); let chain_id: Word = "chain_id".into(); @@ -815,7 +806,7 @@ mod tests { let provider_metrics = Arc::new(ProviderEthRpcMetrics::new(mock_registry.clone())); // Set errors - metrics.report_for_test(&ProviderName::from(error_provider.clone()), false); + metrics.report_for_test(&ProviderName::from(error_provider), false); let mut no_retest_adapters = vec![]; no_retest_adapters.push(EthereumNetworkAdapter { From 0e420a7540c3a612e7f0203be08b9cd2da85aeb2 Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Mon, 17 Feb 2025 16:21:33 -0800 Subject: [PATCH 4/6] core: Remove use of uuid --- Cargo.lock | 1 - core/Cargo.toml | 1 - core/src/polling_monitor/ipfs_service.rs | 7 +++++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a648e996f8e..80178776216 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1983,7 +1983,6 @@ dependencies = [ "serde_yaml", "tower 0.4.13 (git+https://github.com/tower-rs/tower.git)", "tower-test", - "uuid", "wiremock", ] diff --git a/core/Cargo.toml b/core/Cargo.toml index 1043fc307c2..4140b37ffbe 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -23,5 +23,4 @@ anyhow = "1.0" [dev-dependencies] tower-test = { git = "https://github.com/tower-rs/tower.git" } -uuid = { version = "1.15.1", features = ["v4"] } wiremock = "0.6.1" diff --git a/core/src/polling_monitor/ipfs_service.rs b/core/src/polling_monitor/ipfs_service.rs index f8c68976216..86a5feef0ab 100644 --- a/core/src/polling_monitor/ipfs_service.rs +++ b/core/src/polling_monitor/ipfs_service.rs @@ -104,7 +104,6 @@ mod test { use graph::log::discard; use graph::tokio; use tower::ServiceExt; - use uuid::Uuid; use wiremock::matchers as m; use wiremock::Mock; use wiremock::MockServer; @@ -114,7 +113,11 @@ mod test { #[tokio::test] async fn cat_file_in_folder() { - let random_bytes = Uuid::new_v4().as_bytes().to_vec(); + let random_bytes = "One morning, when Gregor Samsa woke \ + from troubled dreams, he found himself transformed in his bed \ + into a horrible vermin" + .as_bytes() + .to_vec(); let ipfs_file = ("dir/file.txt", random_bytes.clone()); let add_resp = add_files_to_local_ipfs_node_for_testing([ipfs_file]) From 8f9afd41490aa5d143a76673ac5a5daf45d6ef1b Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Mon, 17 Feb 2025 16:34:03 -0800 Subject: [PATCH 5/6] store: Remove use of uuid --- Cargo.lock | 1 - store/postgres/Cargo.toml | 1 - store/postgres/src/store_events.rs | 6 +++--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 80178776216..6c1e8bb0018 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2151,7 +2151,6 @@ dependencies = [ "serde", "serde_json", "stable-hash 0.3.4", - "uuid", ] [[package]] diff --git a/store/postgres/Cargo.toml b/store/postgres/Cargo.toml index bbf08701633..9a746646807 100644 --- a/store/postgres/Cargo.toml +++ b/store/postgres/Cargo.toml @@ -26,7 +26,6 @@ postgres-openssl = "0.5.0" rand = "0.8.4" serde = { workspace = true } serde_json = { workspace = true } -uuid = { version = "1.15.1", features = ["v4"] } stable-hash_legacy = { git = "https://github.com/graphprotocol/stable-hash", branch = "old", package = "stable-hash" } anyhow = "1.0.86" git-testament = "0.2.5" diff --git a/store/postgres/src/store_events.rs b/store/postgres/src/store_events.rs index 503b5cae08a..83b8e3b069b 100644 --- a/store/postgres/src/store_events.rs +++ b/store/postgres/src/store_events.rs @@ -6,7 +6,6 @@ use graph::tokio_stream::wrappers::ReceiverStream; use std::sync::{atomic::Ordering, Arc, RwLock}; use std::{collections::HashMap, sync::atomic::AtomicUsize}; use tokio::sync::mpsc::{channel, Sender}; -use uuid::Uuid; use crate::notification_listener::{NotificationListener, SafeChannelName}; use graph::components::store::SubscriptionManager as SubscriptionManagerTrait; @@ -89,7 +88,7 @@ impl StoreEventListener { /// Manage subscriptions to the `StoreEvent` stream. Keep a list of /// currently active subscribers and forward new events to each of them pub struct SubscriptionManager { - subscriptions: Arc>>>>, + subscriptions: Arc>>>>, /// Keep the notification listener alive listener: StoreEventListener, @@ -180,7 +179,8 @@ impl SubscriptionManager { impl SubscriptionManagerTrait for SubscriptionManager { fn subscribe(&self) -> StoreEventStreamBox { - let id = Uuid::new_v4().to_string(); + static SUBSCRIPTION_COUNTER: AtomicUsize = AtomicUsize::new(0); + let id = SUBSCRIPTION_COUNTER.fetch_add(1, Ordering::SeqCst); // Prepare the new subscription by creating a channel and a subscription object let (sender, receiver) = channel(100); From 4b7498ba73d7ca4db41dd3be9ddeab948f787ef8 Mon Sep 17 00:00:00 2001 From: David Lutterkort Date: Mon, 17 Feb 2025 16:38:45 -0800 Subject: [PATCH 6/6] all: Don't enable uuid feature in async-graphql --- Cargo.lock | 5 ----- Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6c1e8bb0018..c511d00601f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -211,7 +211,6 @@ dependencies = [ "static_assertions_next", "tempfile", "thiserror 1.0.61", - "uuid", ] [[package]] @@ -5717,10 +5716,6 @@ name = "uuid" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" -dependencies = [ - "getrandom 0.3.1", - "serde", -] [[package]] name = "vcpkg" diff --git a/Cargo.toml b/Cargo.toml index b01bc4d4fd1..a8193c3f0ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ license = "MIT OR Apache-2.0" [workspace.dependencies] anyhow = "1.0" -async-graphql = { version = "7.0.15", features = ["chrono", "uuid"] } +async-graphql = { version = "7.0.15", features = ["chrono"] } async-graphql-axum = "7.0.15" axum = "0.8.1" chrono = "0.4.38"