diff --git a/Cargo.lock b/Cargo.lock index ebe7d21467a906dc6de8cd05c3c300331e7c9f93..6fbf96e7e06b620e6ee89297ce38dbfb07512162 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -808,7 +808,6 @@ dependencies = [ "futures", "indoc", "inventory", - "lazy_static", "libc", "linkme", "nix 0.23.2", diff --git a/Cargo.toml b/Cargo.toml index df17a407a074701f065a54efc298443372a664d0..10217fad6bfe9e549f877250847bce66c3fdb431 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,6 @@ thiserror = "1.0" indoc = "1.0" nix = "0.23.1" base64 = "0.13" -lazy_static = "1.4" uuid = {version = "1.0", features = ["v3"]} linkme = "0.2.10" futures = "0.3.25" diff --git a/src/traft/mod.rs b/src/traft/mod.rs index aaddea5b84fa8ea1bff93d0bfb0a64fba9d6d9b9..fe2adb9c24212a473e33127ebf1f925ebb0e1755 100644 --- a/src/traft/mod.rs +++ b/src/traft/mod.rs @@ -372,27 +372,30 @@ pub trait ContextCoercion: Serialize + DeserializeOwned { } /////////////////////////////////////////////////////////////////////////////// -lazy_static::lazy_static! { - static ref NAMESPACE_INSTANCE_UUID: Uuid = - Uuid::new_v3(&Uuid::nil(), "INSTANCE_UUID".as_bytes()); - static ref NAMESPACE_REPLICASET_UUID: Uuid = - Uuid::new_v3(&Uuid::nil(), "REPLICASET_UUID".as_bytes()); -} /// Generate UUID for an instance from `instance_id` (String). /// Use Version-3 (MD5) UUID. pub fn instance_uuid(instance_id: &str) -> String { - let uuid = Uuid::new_v3(&NAMESPACE_INSTANCE_UUID, instance_id.as_bytes()); + static mut NAMESPACE_INSTANCE_UUID: Option<Uuid> = None; + let ns = unsafe { NAMESPACE_INSTANCE_UUID.get_or_insert_with(|| uuid_v3("INSTANCE_UUID")) }; + let uuid = Uuid::new_v3(ns, instance_id.as_bytes()); uuid.hyphenated().to_string() } /// Generate UUID for a replicaset from `replicaset_id` (String). /// Use Version-3 (MD5) UUID. pub fn replicaset_uuid(replicaset_id: &str) -> String { - let uuid = Uuid::new_v3(&NAMESPACE_REPLICASET_UUID, replicaset_id.as_bytes()); + static mut NAMESPACE_REPLICASET_UUID: Option<Uuid> = None; + let ns = unsafe { NAMESPACE_REPLICASET_UUID.get_or_insert_with(|| uuid_v3("REPLICASET_UUID")) }; + let uuid = Uuid::new_v3(ns, replicaset_id.as_bytes()); uuid.hyphenated().to_string() } +#[inline(always)] +fn uuid_v3(name: &str) -> Uuid { + Uuid::new_v3(&Uuid::nil(), name.as_bytes()) +} + //////////////////////////////////////////////////////////////////////////////// /// Migration #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]