diff --git a/sgl-model-gateway/src/core/worker_registry.rs b/sgl-model-gateway/src/core/worker_registry.rs index 67a048f85..f91c9769c 100644 --- a/sgl-model-gateway/src/core/worker_registry.rs +++ b/sgl-model-gateway/src/core/worker_registry.rs @@ -57,11 +57,16 @@ impl HashRing { for worker in workers { // Create Arc once per worker, share across all virtual nodes let url: Arc = Arc::from(worker.url()); + let url_bytes = url.as_bytes(); // Create multiple virtual nodes per worker for vnode in 0..VIRTUAL_NODES_PER_WORKER { - let vnode_key = format!("{}#{}", url, vnode); - let pos = Self::hash_position(&vnode_key); + let mut hasher = blake3::Hasher::new(); + hasher.update(url_bytes); + hasher.update(b"#"); + hasher.update(&(vnode as u64).to_le_bytes()); + let hash = hasher.finalize(); + let pos = u64::from_le_bytes(hash.as_bytes()[..8].try_into().unwrap()); entries.push((pos, Arc::clone(&url))); } }