From a80cbcd31451cfe17f9e224e73843fe7232d606b Mon Sep 17 00:00:00 2001 From: yahya <19204398+yhassanzadeh13@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:48:16 -0700 Subject: [PATCH 1/6] chore: move paper to internal/, add internal reference policy Adds internal/ (gitignored) for untracked papers and private docs. Adds rules to CLAUDE.md: no internal paths in code, restate content explicitly rather than linking to files, agents follow the same rules. Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 5 +++++ CLAUDE.md | 10 +++++++++- skip-graphs-paper.pdf | Bin 336873 -> 0 bytes 3 files changed, 14 insertions(+), 1 deletion(-) delete mode 100644 skip-graphs-paper.pdf diff --git a/.gitignore b/.gitignore index d7328db..7164ba8 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,11 @@ target/ #.idea/ .DS_Store +# Untracked internal references (papers, private docs, etc.). +# Contents must never be referenced directly in code or comments. +# Extract and restate any needed information explicitly in the codebase. +internal/ + Cargo.lock .idea/ diff --git a/CLAUDE.md b/CLAUDE.md index 5533984..9e3088f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,7 +8,15 @@ This is a Rust implementation of Skip Graphs - a distributed data structure for ## References -- `skip-graphs-paper.pdf` (Aspnes & Shah) — canonical algorithms: search (Algorithm 1, p.6), insert/join (Algorithm 2, p.8), delete (Algorithm 3, p.8). +Source papers and private documents live in `internal/` (gitignored, never committed). + +- `internal/skip-graphs-paper.pdf` — Aspnes & Shah, "Skip Graphs". Canonical algorithms: search (Algorithm 1, p.6), insert/join (Algorithm 2, p.8), delete (Algorithm 3, p.8). + +### Rules for internal references + +1. **Never cite internal documents in code.** No path references, no "see PDF p.X", no file names from `internal/` in source files, comments, or doc-strings. +2. **Restate, don't link.** If an algorithm, invariant, or design decision from an internal document is needed in the codebase, copy the relevant content explicitly — as a comment, a doc-string, or a design doc under `docs/` — and use that in-codebase copy as the reference going forward. +3. **Agents must follow the same rules.** Any agent working in this repository must not produce code or comments that reference `internal/` paths or document titles. Extract and restate; never leak. ## Architecture diff --git a/skip-graphs-paper.pdf b/skip-graphs-paper.pdf deleted file mode 100644 index 36d0ddd6ae3f88da856638ce8264309b3fc7344f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336873 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 z 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 From 5ce150ecfc4e005ba507c3d2596093ccb329bd43 Mon Sep 17 00:00:00 2001 From: yahya <19204398+yhassanzadeh13@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:48:26 -0700 Subject: [PATCH 2/6] refactor: by-value Copy types, public fields, rename RequestId to Nonce - Return Identifier and MembershipVector by value (both are Copy) - Accept Copy types by value in method signatures throughout - Make IdSearchReq/IdSearchRes fields public, remove getters and new() constructors (no invariants to protect on plain data structs) - Rename RequestId to Nonce (clearer: randomly generated correlation token used once to match response to request) Co-Authored-By: Claude Sonnet 4.6 --- src/core/context/context_test.rs | 61 +++---- src/core/context/mod.rs | 11 +- src/core/lookup/array_lookup_table.rs | 7 +- src/core/lookup/array_lookup_table_test.rs | 13 +- src/core/lookup/mod.rs | 3 +- src/core/model/address.rs | 2 +- src/core/model/direction.rs | 2 +- src/core/model/identity.rs | 20 +-- src/core/model/memvec.rs | 60 +++---- src/core/model/search.rs | 111 ++----------- src/core/testutil/fixtures.rs | 28 ++-- src/lib.rs | 2 +- src/network/mock/network.rs | 20 ++- src/network/mock/network_test.rs | 80 +++++---- src/network/mod.rs | 4 +- src/network/processor.rs | 22 ++- src/node/base_node.rs | 104 ++++++------ src/node/core.rs | 54 ++++--- src/node/core_test.rs | 178 +++++++++++++-------- src/node/search_by_id_test.rs | 35 ++-- src/node/skip_graph_integration_test.rs | 62 ++++--- tests/test_debug_hex_format.rs | 89 +++++++---- 22 files changed, 511 insertions(+), 457 deletions(-) diff --git a/src/core/context/context_test.rs b/src/core/context/context_test.rs index b91a55c..7e8d079 100644 --- a/src/core/context/context_test.rs +++ b/src/core/context/context_test.rs @@ -14,10 +14,9 @@ mod tests { // Wait until cancellation is processed let ctx_clone = ctx.clone(); - wait_until( - move || ctx_clone.is_cancelled(), - Duration::from_millis(100) - ).await.expect("context should be cancelled within 100ms"); + wait_until(move || ctx_clone.is_cancelled(), Duration::from_millis(100)) + .await + .expect("context should be cancelled within 100ms"); } /// this test ensures that cancelling a parent context cancels its children @@ -33,8 +32,10 @@ mod tests { let child_clone = child.clone(); wait_until( move || child_clone.is_cancelled(), - Duration::from_millis(100) - ).await.expect("child context should be cancelled within 100ms"); + Duration::from_millis(100), + ) + .await + .expect("child context should be cancelled within 100ms"); } /// this test ensures that running an operation completes successfully if its context is not canceled @@ -42,9 +43,7 @@ mod tests { async fn test_successful_operation() { let ctx = IrrevocableContext::new(&span_fixture(), "test_context"); - let result = ctx.run(async { - Ok::(42) - }).await; + let result = ctx.run(async { Ok::(42) }).await; assert!(result.is_ok()); assert_eq!(result.unwrap(), 42); @@ -61,25 +60,27 @@ mod tests { // Wait for cancellation to be processed let ctx_clone = ctx.clone(); - wait_until( - move || ctx_clone.is_cancelled(), - Duration::from_millis(100) - ).await.expect("context should be cancelled within 100ms"); - - let result = ctx.run(async { - // This should not execute due to cancellation - sleep(Duration::from_millis(10)).await; - Ok::(42) - - }).await; + wait_until(move || ctx_clone.is_cancelled(), Duration::from_millis(100)) + .await + .expect("context should be cancelled within 100ms"); + + let result = ctx + .run(async { + // This should not execute due to cancellation + sleep(Duration::from_millis(10)).await; + Ok::(42) + }) + .await; // The operation should return an error since the context was canceled before it could complete assert!(result.is_err()); // The error should indicate cancellation - assert!(result.unwrap_err().to_string().contains("context cancelled")); + assert!(result + .unwrap_err() + .to_string() + .contains("context cancelled")); } - /// this test ensures that nested child contexts are canceled when the root context is canceled #[tokio::test] async fn test_nested_children() { @@ -99,9 +100,15 @@ mod tests { let child2_clone = child2.clone(); let grandchild_clone = grandchild.clone(); wait_until( - move || child1_clone.is_cancelled() && child2_clone.is_cancelled() && grandchild_clone.is_cancelled(), - Duration::from_millis(100) - ).await.expect("all child contexts should be cancelled within 100ms"); + move || { + child1_clone.is_cancelled() + && child2_clone.is_cancelled() + && grandchild_clone.is_cancelled() + }, + Duration::from_millis(100), + ) + .await + .expect("all child contexts should be cancelled within 100ms"); } /// Test that we can create the error propagation hierarchy @@ -137,9 +144,9 @@ mod tests { if let Err(panic_payload) = result { if let Some(panic_msg) = panic_payload.downcast_ref::() { assert_eq!(panic_msg, "irrecoverable error: test irrecoverable error"); - } else{ + } else { panic!("unexpected panic payload type"); } } } -} \ No newline at end of file +} diff --git a/src/core/context/mod.rs b/src/core/context/mod.rs index 4166dab..a0a5106 100644 --- a/src/core/context/mod.rs +++ b/src/core/context/mod.rs @@ -17,7 +17,7 @@ use tokio_util::sync::CancellationToken; use tracing::Span; /// A cancelable context that supports parent-child hierarchies and irrecoverable error propagation. -/// +/// /// When an irrecoverable error is thrown, it propagates up to the root context and terminates the program. /// Children automatically get cancelled when their parent is cancelled. pub struct IrrevocableContext { @@ -34,7 +34,7 @@ impl IrrevocableContext { /// Create a new root context pub fn new(parent_span: &Span, tag: &str) -> Self { let span = tracing::span!(parent: parent_span, tracing::Level::TRACE, "irrevocable_context", tag = tag); - + Self { inner: Arc::new(ContextInner { token: CancellationToken::new(), @@ -82,7 +82,7 @@ impl IrrevocableContext { F: std::future::Future>, { let _enter = self.inner.span.enter(); - + tokio::select! { result = future => result, _ = self.cancelled() => { @@ -96,13 +96,13 @@ impl IrrevocableContext { /// there is no return from this function. pub fn throw_irrecoverable(&self, err: anyhow::Error) -> ! { let _enter = self.inner.span.enter(); - + // Propagate to parent if it exists if let Some(parent) = &self.inner.parent { tracing::error!("propagating irrecoverable error to parent context"); parent.throw_irrecoverable(err); } - + // Root context - panic with the error panic!("irrecoverable error: {}", err); } @@ -145,4 +145,3 @@ impl Clone for IrrevocableContext { } } } - diff --git a/src/core/lookup/array_lookup_table.rs b/src/core/lookup/array_lookup_table.rs index d4c8026..cac79bc 100644 --- a/src/core/lookup/array_lookup_table.rs +++ b/src/core/lookup/array_lookup_table.rs @@ -87,7 +87,12 @@ impl LookupTable for ArrayLookupTable { } // Log the update operation - tracing::trace!("lookup table entry updated: level {}, direction {}, identifier {}", level, direction, identity.id()); + tracing::trace!( + "lookup table entry updated: level {}, direction {}, identifier {}", + level, + direction, + identity.id() + ); Ok(()) } diff --git a/src/core/lookup/array_lookup_table_test.rs b/src/core/lookup/array_lookup_table_test.rs index 3642695..f7e68c2 100644 --- a/src/core/lookup/array_lookup_table_test.rs +++ b/src/core/lookup/array_lookup_table_test.rs @@ -1,10 +1,10 @@ #[cfg(test)] mod tests { - use crate::core::testutil::fixtures::*; - use std::collections::HashMap; - use crate::core::{model, ArrayLookupTable, LookupTable, LOOKUP_TABLE_LEVELS}; use crate::core::model::direction::Direction; use crate::core::model::identity::Identity; + use crate::core::testutil::fixtures::*; + use crate::core::{model, ArrayLookupTable, LookupTable, LOOKUP_TABLE_LEVELS}; + use std::collections::HashMap; #[test] /// A new lookup table should be empty. @@ -127,8 +127,7 @@ mod tests { let identities = random_identities(2 * levels); for i in 0..levels { - lt.update_entry(identities[i], i, Direction::Left) - .unwrap(); + lt.update_entry(identities[i], i, Direction::Left).unwrap(); lt.update_entry(identities[i + levels], i, Direction::Right) .unwrap(); } @@ -242,8 +241,8 @@ mod tests { /// Note: failure or flaky behavior of this test may indicate a bug in the implementation. #[test] fn test_randomized_concurrent_operations_with_validation() { - use rand::Rng; use parking_lot::Mutex; + use rand::Rng; use std::sync::{Arc, Barrier}; use std::thread; @@ -440,4 +439,4 @@ mod tests { assert_eq!(lt2.get_entry(2, Direction::Left).unwrap(), Some(id3)); assert_eq!(lt3.get_entry(2, Direction::Left).unwrap(), Some(id3)); } -} \ No newline at end of file +} diff --git a/src/core/lookup/mod.rs b/src/core/lookup/mod.rs index 41a806d..93bea7f 100644 --- a/src/core/lookup/mod.rs +++ b/src/core/lookup/mod.rs @@ -1,7 +1,6 @@ use crate::core::model::direction::Direction; use crate::core::model::identity::Identity; - pub mod array_lookup_table; mod array_lookup_table_test; @@ -40,7 +39,7 @@ pub trait LookupTable: Send + Sync { fn right_neighbors(&self) -> anyhow::Result>; /// Creates a shallow copy of this lookup table. - /// + /// /// Implementations should ensure that cloned instances share the same underlying data /// (e.g., using Arc for shared ownership). Changes made through one instance should be /// visible in all cloned instances. This is the standard cloning behavior for all diff --git a/src/core/model/address.rs b/src/core/model/address.rs index 1ca23ac..4b40d42 100644 --- a/src/core/model/address.rs +++ b/src/core/model/address.rs @@ -1,5 +1,5 @@ -use std::fmt::Debug; use fixedstr::{str128, str8}; +use std::fmt::Debug; /// Represents a networking address; composed of host + port #[derive(Copy, Clone, PartialEq)] diff --git a/src/core/model/direction.rs b/src/core/model/direction.rs index d0b88f0..05bbf06 100644 --- a/src/core/model/direction.rs +++ b/src/core/model/direction.rs @@ -19,5 +19,5 @@ impl Display for Direction { impl Debug for Direction { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{}", self) - } + } } diff --git a/src/core/model/identity.rs b/src/core/model/identity.rs index a2fe210..9622430 100644 --- a/src/core/model/identity.rs +++ b/src/core/model/identity.rs @@ -10,22 +10,22 @@ pub struct Identity { impl Identity { /// Create a new Identity - pub fn new(id: &Identifier, mem_vec: &MembershipVector, address: Address) -> Identity { + pub fn new(id: Identifier, mem_vec: MembershipVector, address: Address) -> Identity { Identity { - id: *id, - mem_vec: *mem_vec, + id, + mem_vec, address, } } /// Get the identifier of the node - pub fn id(&self) -> &Identifier { - &self.id + pub fn id(&self) -> Identifier { + self.id } /// Get the membership vector of the node - pub fn mem_vec(&self) -> &MembershipVector { - &self.mem_vec + pub fn mem_vec(&self) -> MembershipVector { + self.mem_vec } /// Get the address of the node @@ -45,9 +45,9 @@ mod tests { let id = random_identifier(); let mem_vec = random_membership_vector(); let address = Address::new("localhost", "1234"); - let identity = Identity::new(&id, &mem_vec, address); - assert_eq!(identity.id(), &id); - assert_eq!(identity.mem_vec(), &mem_vec); + let identity = Identity::new(id, mem_vec, address); + assert_eq!(identity.id(), id); + assert_eq!(identity.mem_vec(), mem_vec); assert_eq!(identity.address(), address); } } diff --git a/src/core/model/memvec.rs b/src/core/model/memvec.rs index 3b00e2b..fbe9d5f 100644 --- a/src/core/model/memvec.rs +++ b/src/core/model/memvec.rs @@ -69,7 +69,7 @@ impl MembershipVector { /// # Returns /// /// * `Vec` - A vector containing the bytes of the MembershipVector. - /// + /// /// Consider using `as_bytes()` if you don't need ownership. pub fn to_bytes(&self) -> Vec { self.0.to_vec() @@ -84,7 +84,7 @@ impl MembershipVector { /// # Returns /// /// * `u64` - The number of common prefix bits. - pub fn common_prefix_bit(&self, other: &MembershipVector) -> usize { + pub fn common_prefix_bit(&self, other: MembershipVector) -> usize { let mut common_bits = 0; for (byte_a, byte_b) in self.0.iter().zip(other.0.iter()) { let xor = byte_a ^ byte_b; @@ -239,16 +239,16 @@ mod test { // every membership vector should have complete common bits prefix with itself. assert_eq!( - mv_0.common_prefix_bit(&mv_0), + mv_0.common_prefix_bit(mv_0), model::IDENTIFIER_SIZE_BYTES * 8 ); assert_eq!( - mv_1.common_prefix_bit(&mv_1), + mv_1.common_prefix_bit(mv_1), model::IDENTIFIER_SIZE_BYTES * 8 ); // all zero and all one should not have any common bits prefix - assert_eq!(mv_0.common_prefix_bit(&mv_1), 0); + assert_eq!(mv_0.common_prefix_bit(mv_1), 0); // first byte is 01111111 and the rest is all 1 let first_bit_zero = [ @@ -259,15 +259,15 @@ mod test { let mv_01 = MembershipVector::from_bytes(&first_bit_zero).unwrap(); // should have complete common prefix with itself assert_eq!( - mv_01.common_prefix_bit(&mv_01), + mv_01.common_prefix_bit(mv_01), model::IDENTIFIER_SIZE_BYTES * 8 ); // should have zero common prefix with all 1s. - assert_eq!(mv_1.common_prefix_bit(&mv_01), 0); - assert_eq!(mv_01.common_prefix_bit(&mv_1), 0); + assert_eq!(mv_1.common_prefix_bit(mv_01), 0); + assert_eq!(mv_01.common_prefix_bit(mv_1), 0); // should have 1 common bit prefix with all 0s (only the first bit) - assert_eq!(mv_0.common_prefix_bit(&mv_01), 1); - assert_eq!(mv_01.common_prefix_bit(&mv_0), 1); + assert_eq!(mv_0.common_prefix_bit(mv_01), 1); + assert_eq!(mv_01.common_prefix_bit(mv_0), 1); // 00111111 11111111 ... // first two bits are zero and the rest is all 1 @@ -276,15 +276,15 @@ mod test { let mv_001 = MembershipVector::from_bytes(&first_two_bits_zero).unwrap(); // should have complete common prefix with itself assert_eq!( - mv_001.common_prefix_bit(&mv_001), + mv_001.common_prefix_bit(mv_001), model::IDENTIFIER_SIZE_BYTES * 8 ); // should have two bits common prefix with all 0s. - assert_eq!(mv_001.common_prefix_bit(&mv_0), 2); - assert_eq!(mv_0.common_prefix_bit(&mv_001), 2); + assert_eq!(mv_001.common_prefix_bit(mv_0), 2); + assert_eq!(mv_0.common_prefix_bit(mv_001), 2); // should have zero bits common prefix with all 1s. - assert_eq!(mv_001.common_prefix_bit(&mv_1), 0); - assert_eq!(mv_1.common_prefix_bit(&mv_001), 0); + assert_eq!(mv_001.common_prefix_bit(mv_1), 0); + assert_eq!(mv_1.common_prefix_bit(mv_001), 0); // 11111111 00000000 11111111 11111111 ... // first byte all ones; second byte all zeros; third and rest all ones @@ -297,15 +297,15 @@ mod test { let mv_second_byte_all_zero = MembershipVector::from_bytes(&second_byte_all_zero).unwrap(); // should have complete common prefix with itself. assert_eq!( - mv_second_byte_all_zero.common_prefix_bit(&mv_second_byte_all_zero), + mv_second_byte_all_zero.common_prefix_bit(mv_second_byte_all_zero), model::IDENTIFIER_SIZE_BYTES * 8 ); // should have zero bits common prefix with all zeros - assert_eq!(mv_second_byte_all_zero.common_prefix_bit(&mv_0), 0); - assert_eq!(mv_0.common_prefix_bit(&mv_second_byte_all_zero), 0); + assert_eq!(mv_second_byte_all_zero.common_prefix_bit(mv_0), 0); + assert_eq!(mv_0.common_prefix_bit(mv_second_byte_all_zero), 0); // should have 8 bits (one complete byte) common prefix with all ones. - assert_eq!(mv_second_byte_all_zero.common_prefix_bit(&mv_1), 8); - assert_eq!(mv_1.common_prefix_bit(&mv_second_byte_all_zero), 8); + assert_eq!(mv_second_byte_all_zero.common_prefix_bit(mv_1), 8); + assert_eq!(mv_1.common_prefix_bit(mv_second_byte_all_zero), 8); // 11111111 10000000 11111111 11111111 ... let second_byte_128 = [ @@ -317,22 +317,22 @@ mod test { let mv_second_byte_128 = MembershipVector::from_bytes(&second_byte_128).unwrap(); // should have complete common prefix with itself assert_eq!( - mv_second_byte_128.common_prefix_bit(&mv_second_byte_128), + mv_second_byte_128.common_prefix_bit(mv_second_byte_128), model::IDENTIFIER_SIZE_BYTES * 8 ); // should have zero bits common prefix with all zeros; - assert_eq!(mv_second_byte_128.common_prefix_bit(&mv_0), 0); - assert_eq!(mv_0.common_prefix_bit(&mv_second_byte_128), 0); + assert_eq!(mv_second_byte_128.common_prefix_bit(mv_0), 0); + assert_eq!(mv_0.common_prefix_bit(mv_second_byte_128), 0); // should have 9 bits common prefix with all ones (first byte and first bit of the second byte): - assert_eq!(mv_second_byte_128.common_prefix_bit(&mv_1), 8 + 1); - assert_eq!(mv_1.common_prefix_bit(&mv_second_byte_128), 8 + 1); + assert_eq!(mv_second_byte_128.common_prefix_bit(mv_1), 8 + 1); + assert_eq!(mv_1.common_prefix_bit(mv_second_byte_128), 8 + 1); // should have 8 bits common prefix with the second_byte_all_zero assert_eq!( - mv_second_byte_128.common_prefix_bit(&mv_second_byte_all_zero), + mv_second_byte_128.common_prefix_bit(mv_second_byte_all_zero), 8 ); assert_eq!( - mv_second_byte_all_zero.common_prefix_bit(&mv_second_byte_128), + mv_second_byte_all_zero.common_prefix_bit(mv_second_byte_128), 8 ); @@ -359,8 +359,8 @@ mod test { &[left_bytes.clone(), vec![255u8; 1], right_bytes.clone()].concat(), ) .unwrap(); - assert_eq!(mv_239.common_prefix_bit(&mv_255), random_index * 8 + 3); - assert_eq!(mv_255.common_prefix_bit(&mv_239), random_index * 8 + 3); + assert_eq!(mv_239.common_prefix_bit(mv_255), random_index * 8 + 3); + assert_eq!(mv_255.common_prefix_bit(mv_239), random_index * 8 + 3); // Case 2: at random index; they differ at a random bit let byte_1 = random::bytes(1)[0]; @@ -387,7 +387,7 @@ mod test { // is at the random_bit_index, so the first 8 - random_bit_index bits are common prefix. // However, random-bit-index starts from 0, so we indeed have (8 - (random_bit_index + 1)) bits common prefix. assert_eq!( - mv_1.common_prefix_bit(&mv_2), + mv_1.common_prefix_bit(mv_2), random_index * 8 + (7 - random_bit_index) ); } diff --git a/src/core/model/search.rs b/src/core/model/search.rs index 5ef4f14..5b97a24 100644 --- a/src/core/model/search.rs +++ b/src/core/model/search.rs @@ -3,13 +3,13 @@ use crate::core::model::direction::Direction; use crate::core::Identifier; #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub struct RequestId { +pub struct Nonce { id: u128, } -impl RequestId { +impl Nonce { pub fn random() -> Self { - RequestId { + Nonce { id: rand::random::(), } } @@ -17,103 +17,26 @@ impl RequestId { #[derive(Debug, Copy, Clone)] pub struct IdSearchReq { - req_id: RequestId, - target: Identifier, - origin: Identifier, - level: LookupTableLevel, - direction: Direction, -} - -impl IdSearchReq { - pub fn new( - req_id: RequestId, - origin: Identifier, - target: Identifier, - level: LookupTableLevel, - direction: Direction, - ) -> Self { - IdSearchReq { - req_id, - target, - origin, - level, - direction, - } - } - - pub fn target(&self) -> &Identifier { - &self.target - } - - pub fn level(&self) -> LookupTableLevel { - self.level - } - - pub fn direction(&self) -> Direction { - self.direction - } - - pub fn origin(&self) -> &Identifier { - &self.origin - } - - pub fn req_id(&self) -> RequestId { - self.req_id - } + /// The unique identifier of the search request across all nodes (randomly generated). + pub nonce: Nonce, + /// The identifier that is being searched for. + pub target: Identifier, + /// The identifier of the node that initiated the search. + pub origin: Identifier, + /// The level of the lookup table where the search is being performed. + pub level: LookupTableLevel, + /// The direction of the search. + pub direction: Direction, } #[derive(Debug, Copy, Clone)] pub struct IdSearchRes { /// The unique identifier of the search request across all nodes (randomly generated). - request_id: RequestId, + pub nonce: Nonce, /// The identifier that is being searched for. - target: Identifier, + pub target: Identifier, /// The level of the lookup table where the search was terminated at the current node. - termination_level: LookupTableLevel, + pub termination_level: LookupTableLevel, /// The identifier that was found during the search process at the current node. - result: Identifier, -} - -impl IdSearchRes { - /// Constructs a new `IdentifierSearchResult` instance. - /// - /// # Parameters - /// - /// - `request_id`: A `RequestId` that uniquely identifies the search request across all nodes (randomly generated). - /// - `target`: An `Identifier` representing the target element for the search operation in the lookup table of the current node. - /// - `termination_level`: A `LookupTableLevel` that specifies the lookup level where the search was terminated at the current node. - /// - `result`: An `Identifier` holding the result of the search operation at the current node. - /// - /// # Returns - /// - /// Returns a new `IdentifierSearchResult` instance. - /// and `result` parameters. - pub fn new(request_id: RequestId, target: Identifier, level: LookupTableLevel, result: Identifier) -> Self { - IdSearchRes { - request_id, - target, - termination_level: level, - result, - } - } - - /// Returns a reference to the `target` field of the struct. - pub fn target(&self) -> &Identifier { - &self.target - } - - /// Returns the level of the lookup table where the search was terminated at the current node. - pub fn termination_level(&self) -> LookupTableLevel { - self.termination_level - } - - /// Returns the result of the search operation at the current node. - pub fn result(&self) -> &Identifier { - &self.result - } - - /// Returns the request id of the search, the unique id that identifies the search request across all nodes. - pub fn request_id(&self) -> RequestId { - self.request_id - } + pub result: Identifier, } diff --git a/src/core/testutil/fixtures.rs b/src/core/testutil/fixtures.rs index 0bd3b91..2ef26e1 100644 --- a/src/core/testutil/fixtures.rs +++ b/src/core/testutil/fixtures.rs @@ -83,8 +83,8 @@ pub fn random_address() -> Address { pub fn random_identity() -> Identity { Identity::new( - &random_identifier(), - &random_membership_vector(), + random_identifier(), + random_membership_vector(), random_address(), ) } @@ -99,8 +99,7 @@ pub fn random_lookup_table(n: usize) -> ArrayLookupTable { let ids = random_identities(2 * n); for i in 0..n { lt.update_entry(ids[i], i, Direction::Left).unwrap(); - lt.update_entry(ids[i + n], i, Direction::Right) - .unwrap(); + lt.update_entry(ids[i + n], i, Direction::Right).unwrap(); } lt } @@ -115,8 +114,8 @@ pub fn random_lookup_table_with_extremes(n: usize) -> ArrayLookupTable { let max_id = Identifier::from_bytes(&[0xFFu8; model::IDENTIFIER_SIZE_BYTES]).unwrap(); let max_mv = MembershipVector::from_bytes(&[0xFFu8; model::IDENTIFIER_SIZE_BYTES]).unwrap(); - let zero_identity = Identity::new(&zero_id, &zero_mv, random_address()); - let max_identity = Identity::new(&max_id, &max_mv, random_address()); + let zero_identity = Identity::new(zero_id, zero_mv, random_address()); + let max_identity = Identity::new(max_id, max_mv, random_address()); lt.update_entry(zero_identity, 0, Direction::Left).unwrap(); lt.update_entry(max_identity, 0, Direction::Right).unwrap(); @@ -242,23 +241,18 @@ mod test { } /// Polls `condition` on a blocking task (yielding between checks) until it is true or `timeout` elapses. -pub async fn wait_until( - mut condition: F, - timeout: Duration, -) -> Result<(), String> +pub async fn wait_until(mut condition: F, timeout: Duration) -> Result<(), String> where F: FnMut() -> bool + Send + 'static, { let (tx, rx) = tokio::sync::oneshot::channel::>(); - let condition_task = tokio::task::spawn_blocking(move || { - loop { - if condition() { - let _ = tx.send(Ok(())); - return; - } - std::thread::yield_now(); + let condition_task = tokio::task::spawn_blocking(move || loop { + if condition() { + let _ = tx.send(Ok(())); + return; } + std::thread::yield_now(); }); let result = match tokio::time::timeout(timeout, rx).await { diff --git a/src/lib.rs b/src/lib.rs index cb137c0..af57158 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,3 @@ pub mod core; -mod node; mod network; +mod node; diff --git a/src/network/mock/network.rs b/src/network/mock/network.rs index 2326277..93a9530 100644 --- a/src/network/mock/network.rs +++ b/src/network/mock/network.rs @@ -1,9 +1,9 @@ -use std::sync::Arc; +use crate::core::Identifier; use crate::network::mock::hub::NetworkHub; use crate::network::{Event, MessageProcessor, Network}; use anyhow::{anyhow, Context}; use parking_lot::RwLock; -use crate::core::Identifier; +use std::sync::Arc; /// MockNetwork is a mock implementation of the Network trait for testing purposes. /// It does not perform any real network operations but simulates event routing and processing through a `NetworkHub`. @@ -38,12 +38,12 @@ impl MockNetwork { /// * `Result<(), anyhow::Error>`: Returns Ok if the event was processed successfully, or an error if processing failed. pub fn incoming_event(&self, origin_id: Identifier, event: Event) -> anyhow::Result<()> { let core_guard = self.core.read(); - + let processor = match core_guard.processor.as_ref() { Some(p) => p, None => return Err(anyhow!("no event processor registered")), }; - + processor .process_incoming_event(origin_id, event) .context("failed to process incoming event") @@ -62,8 +62,9 @@ impl Network for MockNetwork { /// Sends an event through the mock network by routing it through the NetworkHub. fn send_event(&self, target_id: Identifier, event: Event) -> anyhow::Result<()> { let core_guard = self.core.read(); - - core_guard.hub + + core_guard + .hub .route_event(core_guard.id, target_id, event) .map_err(|e| anyhow!("failed to route event: {}", e)) } @@ -71,12 +72,9 @@ impl Network for MockNetwork { /// Registers an event processor to handle incoming events. /// Only one processor can be registered at a time. /// If a processor is already registered, an error is returned. - fn register_processor( - &self, - processor: MessageProcessor, - ) -> anyhow::Result<()> { + fn register_processor(&self, processor: MessageProcessor) -> anyhow::Result<()> { let mut core_guard = self.core.write(); - + match core_guard.processor.as_ref() { Some(_) => Err(anyhow!("an event processor is already registered")), None => { diff --git a/src/network/mock/network_test.rs b/src/network/mock/network_test.rs index bfe56d5..d524815 100644 --- a/src/network/mock/network_test.rs +++ b/src/network/mock/network_test.rs @@ -1,11 +1,11 @@ use crate::core::testutil::fixtures::random_identifier; +use crate::core::Identifier; use crate::network::mock::hub::NetworkHub; use crate::network::Event::TestMessage; -use crate::network::{MessageProcessor, EventProcessorCore, Network, Event}; +use crate::network::{Event, EventProcessorCore, MessageProcessor, Network}; use std::collections::HashSet; use std::sync::{Arc, Barrier, RwLock}; use std::thread; -use crate::core::Identifier; struct MockEventProcessor { inner: Arc>, @@ -45,7 +45,9 @@ impl EventProcessorCore for MockEventProcessor { self.inner.write().unwrap().seen.insert(content); Ok(()) } - _ => Err(anyhow::anyhow!("MockEventProcessor only handles TestMessage payloads")), + _ => Err(anyhow::anyhow!( + "MockEventProcessor only handles TestMessage payloads" + )), } } } @@ -60,15 +62,12 @@ fn test_mock_event_processor() { let processor = MessageProcessor::new(Box::new(core_processor.clone())); let event = TestMessage("Hello, World!".to_string()); - assert!(!core_processor.has_seen("Hello, World!")); - - assert!(mock_network - .register_processor(processor) - .is_ok()); + + assert!(mock_network.register_processor(processor).is_ok()); let origin_id = random_identifier(); assert!(hub.route_event(origin_id, target_id, event).is_ok()); - + assert!(core_processor.has_seen("Hello, World!")); } @@ -91,9 +90,9 @@ fn test_hub_route_event() { let event = TestMessage("Test message".to_string()); assert!(!core_proc_1.has_seen("Test message")); - + assert!(mock_net_2.send_event(id_1, event).is_ok()); - + assert!(core_proc_1.has_seen("Test message")); } @@ -102,29 +101,29 @@ fn test_hub_route_event() { fn test_network_hub_shallow_clone() { let hub = NetworkHub::new(); let hub_clone = hub.clone(); - + let target_id = random_identifier(); - + // Create a mock network through the original hub let mock_network = NetworkHub::new_mock_network(hub.clone(), target_id).unwrap(); - + // Create an event to route through the cloned hub let event = TestMessage("Shallow clone test".to_string()); - + // Register a processor on the mock network let core_processor = MockEventProcessor::new(); let processor = MessageProcessor::new(Box::new(core_processor.clone())); mock_network .register_processor(processor) .expect("failed to register event processor"); - + // Verify the event hasn't been seen yet assert!(!core_processor.has_seen("Shallow clone test")); - + // Route event through the CLONED hub - this should work because it shares the same underlying data let origin_id = random_identifier(); assert!(hub_clone.route_event(origin_id, target_id, event).is_ok()); - + // Verify the event was processed - proving the clone shares the same networks map assert!(core_processor.has_seen("Shallow clone test")); } @@ -146,8 +145,7 @@ fn test_concurrent_event_sending() { let mock_net_2 = NetworkHub::new_mock_network(hub, id_2).unwrap(); // Create 10 different event contents - let event_contents: Vec = - (0..10).map(|i| format!("Concurrent message {i}")).collect(); + let event_contents: Vec = (0..10).map(|i| format!("Concurrent message {i}")).collect(); // Set up a barrier to synchronize all threads let barrier = Arc::new(Barrier::new(10)); @@ -194,26 +192,26 @@ fn test_mock_network_processor_sharing_between_clones() { let hub = NetworkHub::new(); let identifier = random_identifier(); let mock_network = NetworkHub::new_mock_network(hub.clone(), identifier).unwrap(); - + // Clone the network before registering a processor let mock_network_clone = mock_network.clone(); - + // Register a processor on the original network let core_processor = MockEventProcessor::new(); let processor = MessageProcessor::new(Box::new(core_processor.clone())); - + assert!(mock_network.register_processor(processor).is_ok()); - + // Create an event to test with let event = TestMessage("Shared processor test".to_string()); - + // Verify the event hasn't been seen yet assert!(!core_processor.has_seen("Shared processor test")); - + // Send event through the CLONED network - should work because processor is shared let origin_id = random_identifier(); assert!(mock_network_clone.incoming_event(origin_id, event).is_ok()); - + // Verify the event was processed through the shared processor assert!(core_processor.has_seen("Shared processor test")); } @@ -224,26 +222,26 @@ fn test_mock_network_processor_sharing_clone_to_original() { let hub = NetworkHub::new(); let identifier = random_identifier(); let mock_network = NetworkHub::new_mock_network(hub.clone(), identifier).unwrap(); - + // Clone the network let mock_network_clone = mock_network.clone(); - + // Register a processor on the CLONED network let core_processor = MockEventProcessor::new(); let processor = MessageProcessor::new(Box::new(core_processor.clone())); - + assert!(mock_network_clone.register_processor(processor).is_ok()); - + // Create an event to test with let event = TestMessage("Clone to original test".to_string()); - + // Verify the event hasn't been seen yet assert!(!core_processor.has_seen("Clone to original test")); - + // Send event through the ORIGINAL network - should work because processor is shared let origin_id = random_identifier(); assert!(mock_network.incoming_event(origin_id, event).is_ok()); - + // Verify the event was processed through the shared processor assert!(core_processor.has_seen("Clone to original test")); } @@ -256,26 +254,24 @@ fn test_event_processor_clone_functionality() { let processor1 = MessageProcessor::new(Box::new(core_processor.clone())); let processor2 = processor1.clone(); - // Create test events let event1 = TestMessage("Processor clone test 1".to_string()); - - let event2 = TestMessage("Processor clone test 2".to_string()); - + let event2 = TestMessage("Processor clone test 2".to_string()); + // Verify events haven't been seen yet assert!(!core_processor.has_seen("Processor clone test 1")); assert!(!core_processor.has_seen("Processor clone test 2")); - + // Process first event with first processor - let origin_id = random_identifier(); + let origin_id = random_identifier(); assert!(processor1.process_incoming_event(origin_id, event1).is_ok()); assert!(core_processor.has_seen("Processor clone test 1")); - + // Process second event with cloned processor assert!(processor2.process_incoming_event(origin_id, event2).is_ok()); assert!(core_processor.has_seen("Processor clone test 2")); - + // Both events should be visible from the shared state assert!(core_processor.has_seen("Processor clone test 1")); assert!(core_processor.has_seen("Processor clone test 2")); diff --git a/src/network/mod.rs b/src/network/mod.rs index 7fbda45..a81281b 100644 --- a/src/network/mod.rs +++ b/src/network/mod.rs @@ -1,7 +1,7 @@ pub mod mock; mod processor; -use crate::core::{Identifier, IdSearchReq, IdSearchRes}; +use crate::core::{IdSearchReq, IdSearchRes, Identifier}; #[allow(unused)] pub use processor::MessageProcessor; @@ -11,7 +11,7 @@ pub use processor::MessageProcessor; pub enum Event { TestMessage(String), // A payload for testing purposes, it is a simple string event, and is not used in production. SearchByIdRequest(IdSearchReq), // A payload representing an identifier search request. - SearchByIdResponse(IdSearchRes) // A payload representing an identifier search response. + SearchByIdResponse(IdSearchRes), // A payload representing an identifier search response. } /// Core event processing logic that implementations must provide. diff --git a/src/network/processor.rs b/src/network/processor.rs index 4f3052a..8a4bdf8 100644 --- a/src/network/processor.rs +++ b/src/network/processor.rs @@ -1,7 +1,7 @@ -use crate::network::{EventProcessorCore, Event}; +use crate::core::Identifier; +use crate::network::{Event, EventProcessorCore}; use parking_lot::RwLock; use std::sync::Arc; -use crate::core::Identifier; /// A thread-safe wrapper that enforces internal thread-safety for event processors. /// This type guarantees that all event processing is properly synchronized. @@ -19,7 +19,11 @@ impl MessageProcessor { } /// Process an incoming event with guaranteed thread-safety. - pub fn process_incoming_event(&self, origin_id: Identifier, event: Event) -> anyhow::Result<()> { + pub fn process_incoming_event( + &self, + origin_id: Identifier, + event: Event, + ) -> anyhow::Result<()> { let core = self.core.read(); core.process_incoming_event(origin_id, event) } @@ -50,7 +54,11 @@ mod tests { } impl EventProcessorCore for MockMessageProcessorCore { - fn process_incoming_event(&self, _origin_id: Identifier, _event: Event) -> anyhow::Result<()> { + fn process_incoming_event( + &self, + _origin_id: Identifier, + _event: Event, + ) -> anyhow::Result<()> { self.counter.fetch_add(1, Ordering::SeqCst); Ok(()) } @@ -70,12 +78,14 @@ mod tests { assert_eq!(counter_ref.load(Ordering::SeqCst), 0); let origin_id = random_identifier(); - processor.process_incoming_event(origin_id, test_event).unwrap(); + processor + .process_incoming_event(origin_id, test_event) + .unwrap(); assert_eq!(counter_ref.load(Ordering::SeqCst), 1); let origin_id2 = random_identifier(); let test_event2 = Event::TestMessage("test2".to_string()); - + processor_clone .process_incoming_event(origin_id2, test_event2) .unwrap(); diff --git a/src/node/base_node.rs b/src/node/base_node.rs index b00a69d..45748ed 100644 --- a/src/node/base_node.rs +++ b/src/node/base_node.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use crate::core::model::search::Nonce; use crate::core::{IdSearchReq, IdSearchRes, Identifier, IrrevocableContext, MembershipVector}; use crate::network::Event::{SearchByIdRequest, SearchByIdResponse}; #[cfg(test)] // TODO: Remove once BaseNode is used in production code. @@ -6,12 +6,12 @@ use crate::network::MessageProcessor; use crate::network::{Event, EventProcessorCore, Network}; use crate::node::core::Core; use anyhow::anyhow; +use std::collections::HashMap; use std::fmt; use std::fmt::Formatter; use std::sync::mpsc::sync_channel; use std::sync::{mpsc::SyncSender, Arc, Mutex}; use tracing::Span; -use crate::core::model::search::RequestId; // TODO: Remove #[allow(dead_code)] once BaseNode is used in production code. #[allow(dead_code)] @@ -28,7 +28,7 @@ pub(crate) struct BaseNode { span: Span, ctx: IrrevocableContext, // map from request id to the sender end of the channel for the response - request_id_map: Arc>>>, + request_id_map: Arc>>>, } impl BaseNode { @@ -69,46 +69,52 @@ impl BaseNode { /// Returns the node's identifier (delegated to core). #[allow(dead_code)] - pub(crate) fn id(&self) -> &Identifier { + pub(crate) fn id(&self) -> Identifier { self.core.id() } /// Returns the node's membership vector (delegated to core). #[allow(dead_code)] - pub(crate) fn mem_vec(&self) -> &MembershipVector { + pub(crate) fn mem_vec(&self) -> MembershipVector { self.core.mem_vec() } #[allow(dead_code)] - pub(crate) fn search_by_id(&self, req: &IdSearchReq) -> anyhow::Result { - let span = - tracing::trace_span!("search_by_id", target = ?req.target(), level = ?req.level()); + pub(crate) fn search_by_id(&self, req: IdSearchReq) -> anyhow::Result { + let span = tracing::trace_span!("search_by_id", target = ?req.target, level = ?req.level); let _enter = span.enter(); - tracing::trace!("searching for target {:?}", req.target()); + tracing::trace!("searching for target {:?}", req.target); let local_res = self .core .search_by_id(req) .map_err(|e| anyhow!("failed to perform search by id {}", e))?; - if local_res.result() == self.core.id() { + if local_res.result == self.core.id() { tracing::trace!("found self in search by id, terminating the search result"); return Ok(local_res); } let (tx, rx) = sync_channel::(1); { - let mut request_id_map = self.request_id_map.lock().expect("mutex was poisoned by a previous panic"); - request_id_map.insert(req.req_id(), tx); + let mut request_id_map = self + .request_id_map + .lock() + .expect("mutex was poisoned by a previous panic"); + request_id_map.insert(req.nonce, tx); } - let relay_request = SearchByIdRequest(IdSearchReq::new( - req.req_id(), - *self.core.id(), - *req.target(), - local_res.termination_level(), - req.direction(), - )); - if let Err(e) = self.net.send_event(*local_res.result(), relay_request) { - self.request_id_map.lock().expect("mutex was poisoned by a previous panic").remove(&req.req_id()); + let relay_request = SearchByIdRequest(IdSearchReq { + nonce: req.nonce, + target: req.target, + origin: self.core.id(), + level: local_res.termination_level, + direction: req.direction, + }); + + if let Err(e) = self.net.send_event(local_res.result, relay_request) { + self.request_id_map + .lock() + .expect("mutex was poisoned by a previous panic") + .remove(&req.nonce); return Err(anyhow!("failed to perform search by id {}", e)); } tracing::info!("relayed search by id request to the next node, pending response"); @@ -117,8 +123,8 @@ impl BaseNode { .map_err(|_| anyhow!("failed to receive response for search by id"))?; tracing::info!( "received network response for search by id {:?}: {:?}", - *req.target(), - net_result.result() + req.target, + net_result.result ); Ok(net_result) } @@ -133,28 +139,28 @@ impl EventProcessorCore for BaseNode { let span = tracing::trace_span!( "search_by_id_request", origin = ?origin_id, - target = ?req.target(), - direction = ?req.direction(), - level = ?req.level() + target = ?req.target, + direction = ?req.direction, + level = ?req.level ); let _enter = span.enter(); tracing::trace!("received request"); let res = self .core - .search_by_id(&req) + .search_by_id(req) .map_err(|e| anyhow!("failed to perform search by id {}", e))?; let span = tracing::trace_span!( "terminating", - result = ?res.result(), - termination_level = ?res.termination_level() + result = ?res.result, + termination_level = ?res.termination_level ); let _enter = span.enter(); - if res.result() == self.core.id() { + if res.result == self.core.id() { self.net - .send_event(*req.origin(), SearchByIdResponse(res)) + .send_event(req.origin, SearchByIdResponse(res)) .map_err(|e| { anyhow!("failed to send response event for search by id: {}", e) })?; @@ -162,15 +168,16 @@ impl EventProcessorCore for BaseNode { return Ok(()); } - let relay_request = SearchByIdRequest(IdSearchReq::new( - req.req_id(), - *req.origin(), - *req.target(), - res.termination_level(), - req.direction(), - )); + let relay_request = SearchByIdRequest(IdSearchReq { + nonce: req.nonce, + target: req.target, + origin: req.origin, + level: res.termination_level, + direction: req.direction, + }); + self.net - .send_event(*res.result(), relay_request) + .send_event(res.result, relay_request) .map_err(|e| { anyhow!( "failed to send relay response event for search by id: {}", @@ -184,16 +191,17 @@ impl EventProcessorCore for BaseNode { let span = tracing::trace_span!( "search_by_id_response", origin = ?origin_id, - target = ?res.target(), - result = ?res.result(), - termination_level = ?res.termination_level() + target = ?res.target, + result = ?res.result, + termination_level = ?res.termination_level ); let _enter = span.enter(); - let waiter = self.request_id_map + let waiter = self + .request_id_map .lock() .expect("mutex was poisoned by a previous panic") - .remove(&res.request_id()); + .remove(&res.nonce); if let Some(tx) = waiter { if let Err(e) = tx.send(res) { tracing::warn!("failed to send the response to the receiver end: {:?}", e) @@ -221,8 +229,8 @@ impl PartialEq for BaseNode { impl fmt::Debug for BaseNode { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { f.debug_struct("BaseNode") - .field("id", self.core.id()) - .field("mem_vec", self.core.mem_vec()) + .field("id", &self.core.id()) + .field("mem_vec", &self.core.mem_vec()) .finish() } } @@ -275,7 +283,7 @@ mod tests { )); let node = BaseNode::new(span.clone(), core, Box::new(mock_net)).unwrap(); - assert_eq!(node.id(), &id); - assert_eq!(node.mem_vec(), &mem_vec); + assert_eq!(node.id(), id); + assert_eq!(node.mem_vec(), mem_vec); } } diff --git a/src/node/core.rs b/src/node/core.rs index b3d3975..60cc652 100644 --- a/src/node/core.rs +++ b/src/node/core.rs @@ -15,21 +15,21 @@ use tracing::Span; /// `BaseNode`, which owns a `Box` and routes events to/from it. pub trait Core: Send + Sync { /// Returns the identifier of the node this core belongs to. - fn id(&self) -> &Identifier; + fn id(&self) -> Identifier; /// Returns the membership vector of the node this core belongs to. - fn mem_vec(&self) -> &MembershipVector; + fn mem_vec(&self) -> MembershipVector; /// Performs a local search for the given identifier in the lookup table /// in the direction and up to the level specified by the request. The /// result is the closest neighbor satisfying the directional constraint, /// or — if no such neighbor exists at any level — the caller's own /// identifier at level 0 (the Aspnes & Shah fallback). - fn search_by_id(&self, req: &IdSearchReq) -> anyhow::Result; + fn search_by_id(&self, req: IdSearchReq) -> anyhow::Result; /// Performs a local search for the given membership vector. #[allow(dead_code)] - fn search_by_mem_vec(&self, req: &IdSearchReq) -> anyhow::Result; + fn search_by_mem_vec(&self, req: IdSearchReq) -> anyhow::Result; /// Shallow-clones this core. Cloned instances share the same underlying /// state (lookup table, etc.) via Arc. @@ -87,28 +87,28 @@ impl Clone for BaseCore { } impl Core for BaseCore { - fn id(&self) -> &Identifier { - &self.id + fn id(&self) -> Identifier { + self.id } - fn mem_vec(&self) -> &MembershipVector { - &self.mem_vec + fn mem_vec(&self) -> MembershipVector { + self.mem_vec } - fn search_by_id(&self, req: &IdSearchReq) -> anyhow::Result { + fn search_by_id(&self, req: IdSearchReq) -> anyhow::Result { let span = tracing::trace_span!( parent: &self.span, "search_by_id_req", - target = ?req.target(), - dir = ?req.direction(), - level = ?req.level() + target = ?req.target, + dir = ?req.direction, + level = ?req.level ); let _enter = span.enter(); // Collect neighbors from levels <= req.level in req.direction - let candidates: Result, _> = (0..=req.level()) - .filter_map(|lvl| match self.lt.get_entry(lvl, req.direction()) { - Ok(Some(identity)) => Some(Ok((*identity.id(), lvl))), + let candidates: Result, _> = (0..=req.level) + .filter_map(|lvl| match self.lt.get_entry(lvl, req.direction) { + Ok(Some(identity)) => Some(Ok((identity.id(), lvl))), Ok(None) => None, Err(e) => Some(Err(anyhow!( "error while searching by id in level {}: {}", @@ -123,30 +123,35 @@ impl Core for BaseCore { tracing::trace!( "found {} candidates across levels 0-{}", candidates.len(), - req.level() + req.level ); // Filter candidates based on the direction - let result = match req.direction() { + let result = match req.direction { Direction::Left => { // smallest identifier that is >= target candidates .into_iter() - .filter(|(id, _)| id >= req.target()) + .filter(|(id, _)| id >= &req.target) .min_by_key(|(id, _)| *id) } Direction::Right => { // greatest identifier that is <= target candidates .into_iter() - .filter(|(id, _)| id <= req.target()) + .filter(|(id, _)| id <= &req.target) .max_by_key(|(id, _)| *id) } }; match result { Some((id, level)) => { - let search_result = IdSearchRes::new(req.req_id(), *req.target(), level, id); + let search_result = IdSearchRes { + nonce: req.nonce, + target: req.target, + termination_level: level, + result: id, + }; tracing::trace!("search successful: found match {:?} at level {}", id, level); Ok(search_result) } @@ -157,12 +162,17 @@ impl Core for BaseCore { "search fallback: no valid candidates found, returning own identifier {:?}", self.id ); - Ok(IdSearchRes::new(req.req_id(), *req.target(), 0, self.id)) + Ok(IdSearchRes { + nonce: req.nonce, + target: req.target, + termination_level: 0, + result: self.id, + }) } } } - fn search_by_mem_vec(&self, _req: &IdSearchReq) -> anyhow::Result { + fn search_by_mem_vec(&self, _req: IdSearchReq) -> anyhow::Result { todo!() } diff --git a/src/node/core_test.rs b/src/node/core_test.rs index 317bb98..a397013 100644 --- a/src/node/core_test.rs +++ b/src/node/core_test.rs @@ -1,5 +1,6 @@ use crate::core::model::direction::Direction; use crate::core::model::identity::Identity; +use crate::core::model::search::Nonce; use crate::core::testutil::fixtures::{ join_all_with_timeout, random_address, random_identifier, random_identifier_greater_than, random_identifier_less_than, random_lookup_table_with_extremes, random_membership_vector, @@ -12,7 +13,6 @@ use crate::node::core::{BaseCore, Core}; use anyhow::anyhow; use rand::Rng; use std::sync::Arc; -use crate::core::model::search::RequestId; fn make_core(id: Identifier, lt: Box) -> BaseCore { BaseCore::new(span_fixture(), id, random_membership_vector(), lt) @@ -33,10 +33,16 @@ fn test_search_by_id_singleton_fallback() { ]; for (target, direction) in cases { - let req = IdSearchReq::new(RequestId::random(), origin_id, target, 3, direction); - let res = core.search_by_id(&req).expect("search failed"); - assert_eq!(res.termination_level(), 0); - assert_eq!(*res.result(), origin_id); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: origin_id, + target, + level: 0, + direction, + }; + let res = core.search_by_id(req).expect("search failed"); + assert_eq!(res.termination_level, 0); + assert_eq!(res.result, origin_id); } } @@ -49,30 +55,32 @@ fn test_search_by_id_found_left_direction() { let safe_neighbor = random_identifier_greater_than(&target); lt.update_entry( - Identity::new( - &safe_neighbor, - &random_membership_vector(), - random_address(), - ), + Identity::new(safe_neighbor, random_membership_vector(), random_address()), 0, Direction::Left, ) .expect("failed to update entry in lookup table"); let core = make_core(random_identifier(), Box::new(lt.clone())); - let req = IdSearchReq::new(RequestId::random(), *core.id(), target, lvl, Direction::Left); - let actual = core.search_by_id(&req).unwrap(); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core.id(), + target, + level: lvl, + direction: Direction::Left, + }; + let actual = core.search_by_id(req).unwrap(); let (expected_lvl, expected_identity) = lt .left_neighbors() .unwrap() .into_iter() - .filter(|(l, id)| *l <= req.level() && id.id() >= req.target()) - .min_by_key(|(_, id)| *id.id()) + .filter(|(l, id)| *l <= req.level && id.id() >= req.target) + .min_by_key(|(_, id)| id.id()) .unwrap(); - assert_eq!(expected_lvl, actual.termination_level()); - assert_eq!(*expected_identity.id(), *actual.result()); + assert_eq!(expected_lvl, actual.termination_level); + assert_eq!(expected_identity.id(), actual.result); } } @@ -85,30 +93,32 @@ fn test_search_by_id_found_right_direction() { let safe_neighbor = random_identifier_less_than(&target); lt.update_entry( - Identity::new( - &safe_neighbor, - &random_membership_vector(), - random_address(), - ), + Identity::new(safe_neighbor, random_membership_vector(), random_address()), 0, Direction::Right, ) .expect("failed to update entry in lookup table"); let core = make_core(random_identifier(), Box::new(lt.clone())); - let req = IdSearchReq::new(RequestId::random(), *core.id(), target, lvl, Direction::Right); - let actual = core.search_by_id(&req).unwrap(); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core.id(), + target, + level: lvl, + direction: Direction::Right, + }; + let actual = core.search_by_id(req).unwrap(); let (expected_lvl, expected_identity) = lt .right_neighbors() .unwrap() .into_iter() - .filter(|(lvl, id)| *lvl <= req.level() && id.id() <= req.target()) - .max_by_key(|(_, id)| *id.id()) + .filter(|(lvl, id)| *lvl <= req.level && id.id() <= req.target) + .max_by_key(|(_, id)| id.id()) .unwrap(); - assert_eq!(expected_lvl, actual.termination_level()); - assert_eq!(*expected_identity.id(), *actual.result()); + assert_eq!(expected_lvl, actual.termination_level); + assert_eq!(expected_identity.id(), actual.result); } } @@ -123,8 +133,8 @@ fn test_search_by_id_not_found_left_direction() { for fill_lvl in 0..LOOKUP_TABLE_LEVELS { lt.update_entry( Identity::new( - &random_identifier_less_than(&target), - &random_membership_vector(), + random_identifier_less_than(&target), + random_membership_vector(), random_address(), ), fill_lvl, @@ -134,11 +144,17 @@ fn test_search_by_id_not_found_left_direction() { } let core = make_core(random_identifier(), Box::new(lt.clone())); - let req = IdSearchReq::new(RequestId::random(), *core.id(), target, lvl, Direction::Left); - let actual = core.search_by_id(&req).unwrap(); - - assert_eq!(actual.termination_level(), 0); - assert_eq!(*actual.result(), *core.id()); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core.id(), + target, + level: lvl, + direction: Direction::Left, + }; + let actual = core.search_by_id(req).unwrap(); + + assert_eq!(actual.termination_level, 0); + assert_eq!(actual.result, core.id()); } } @@ -153,8 +169,8 @@ fn test_search_by_id_not_found_right_direction() { for fill_lvl in 0..LOOKUP_TABLE_LEVELS { lt.update_entry( Identity::new( - &random_identifier_greater_than(&target), - &random_membership_vector(), + random_identifier_greater_than(&target), + random_membership_vector(), random_address(), ), fill_lvl, @@ -164,11 +180,17 @@ fn test_search_by_id_not_found_right_direction() { } let core = make_core(random_identifier(), Box::new(lt.clone())); - let req = IdSearchReq::new(RequestId::random(), *core.id(), target, lvl, Direction::Right); - let actual = core.search_by_id(&req).unwrap(); - - assert_eq!(actual.termination_level(), 0); - assert_eq!(*actual.result(), *core.id()); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core.id(), + target, + level: lvl, + direction: Direction::Right, + }; + let actual = core.search_by_id(req).unwrap(); + + assert_eq!(actual.termination_level, 0); + assert_eq!(actual.result, core.id()); } } @@ -183,11 +205,17 @@ fn test_search_by_id_exact_result() { for direction in [Direction::Left, Direction::Right] { let target_identity = lt.get_entry(lvl, direction).unwrap().unwrap(); let target = target_identity.id(); - let req = IdSearchReq::new(RequestId::random(), *core.id(), *target, lvl, direction); - let actual = core.search_by_id(&req).unwrap(); - - assert_eq!(actual.termination_level(), lvl); - assert_eq!(*actual.result(), *target); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core.id(), + target, + level: lvl, + direction, + }; + let actual = core.search_by_id(req).unwrap(); + + assert_eq!(actual.termination_level, lvl); + assert_eq!(actual.result, target); } } } @@ -200,7 +228,7 @@ fn test_search_by_id_concurrent_found_left_direction() { let target = random_identifier(); let core: Box = Box::new(make_core(random_identifier(), Box::new(lt.clone()))); - assert_ne!(&target, core.id()); + assert_ne!(target, core.id()); let num_threads = 20; let barrier = Arc::new(std::sync::Barrier::new(num_threads + 1)); @@ -212,24 +240,30 @@ fn test_search_by_id_concurrent_found_left_direction() { let handle = std::thread::spawn(move || { handle_barrier.wait(); let lvl = rand::rng().random_range(0..LOOKUP_TABLE_LEVELS); - let req = IdSearchReq::new(RequestId::random(), *core_ref.id(), target, lvl, Direction::Left); - let actual = core_ref.search_by_id(&req).unwrap(); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core_ref.id(), + target, + level: lvl, + direction: Direction::Left, + }; + let actual = core_ref.search_by_id(req).unwrap(); let expected = lt_clone .left_neighbors() .unwrap() .into_iter() - .filter(|(l, id)| *l <= req.level() && id.id() >= req.target()) - .min_by_key(|(_, id)| *id.id()); + .filter(|(l, id)| *l <= req.level && id.id() >= req.target) + .min_by_key(|(_, id)| id.id()); match expected { Some((expected_lvl, expected_identity)) => { - assert_eq!(expected_lvl, actual.termination_level()); - assert_eq!(*expected_identity.id(), *actual.result()); + assert_eq!(expected_lvl, actual.termination_level); + assert_eq!(expected_identity.id(), actual.result); } None => { - assert_eq!(actual.termination_level(), 0); - assert_eq!(*actual.result(), *core_ref.id()); + assert_eq!(actual.termination_level, 0); + assert_eq!(actual.result, core_ref.id()); } } }); @@ -249,7 +283,7 @@ fn test_search_by_id_concurrent_right_direction() { let target = random_identifier(); let core: Box = Box::new(make_core(random_identifier(), Box::new(lt.clone()))); - assert_ne!(&target, core.id()); + assert_ne!(target, core.id()); let num_threads = 20; let barrier = Arc::new(std::sync::Barrier::new(num_threads + 1)); @@ -261,24 +295,30 @@ fn test_search_by_id_concurrent_right_direction() { let handle = std::thread::spawn(move || { handle_barrier.wait(); let lvl = rand::rng().random_range(0..LOOKUP_TABLE_LEVELS); - let req = IdSearchReq::new(RequestId::random(), *core_ref.id(), target, lvl, Direction::Right); - let actual = core_ref.search_by_id(&req).unwrap(); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core_ref.id(), + target, + level: lvl, + direction: Direction::Right, + }; + let actual = core_ref.search_by_id(req).unwrap(); let expected = lt_clone .right_neighbors() .unwrap() .into_iter() - .filter(|(l, id)| *l <= req.level() && id.id() <= req.target()) - .max_by_key(|(_, id)| *id.id()); + .filter(|(l, id)| *l <= req.level && id.id() <= req.target) + .max_by_key(|(_, id)| id.id()); match expected { Some((expected_lvl, expected_identity)) => { - assert_eq!(expected_lvl, actual.termination_level()); - assert_eq!(*expected_identity.id(), *actual.result()); + assert_eq!(expected_lvl, actual.termination_level); + assert_eq!(expected_identity.id(), actual.result); } None => { - assert_eq!(actual.termination_level(), 0); - assert_eq!(*actual.result(), *core_ref.id()); + assert_eq!(actual.termination_level, 0); + assert_eq!(actual.result, core_ref.id()); } } }); @@ -337,8 +377,14 @@ fn test_search_by_id_error_propagation() { } let core = make_core(random_identifier(), Box::new(MockErrorLookupTable)); - let req = IdSearchReq::new(RequestId::random(), *core.id(), random_identifier(), 3, Direction::Left); - let result = core.search_by_id(&req); + let req = IdSearchReq { + nonce: Nonce::random(), + origin: core.id(), + target: random_identifier(), + level: 3, + direction: Direction::Left, + }; + let result = core.search_by_id(req); assert!( result.is_err(), diff --git a/src/node/search_by_id_test.rs b/src/node/search_by_id_test.rs index ca3ca9e..753a659 100644 --- a/src/node/search_by_id_test.rs +++ b/src/node/search_by_id_test.rs @@ -1,6 +1,7 @@ use super::base_node::BaseNode; use crate::core::model::direction::Direction; use crate::core::model::identity::Identity; +use crate::core::model::search::Nonce; use crate::core::testutil::fixtures::{ random_address, random_identifier, random_identifier_greater_than, random_lookup_table_with_extremes, random_membership_vector, span_fixture, @@ -10,7 +11,6 @@ use crate::network::{Event, EventProcessorCore, NetworkMock}; use crate::node::core::BaseCore; use std::sync::Arc; use unimock::*; -use crate::core::model::search::RequestId; /// Verifies the node, acting as an `EventProcessor`, relays an /// `IdSearchRequest` event to the expected neighbor via the network. @@ -23,26 +23,28 @@ fn test_search_by_id_networking_integration_relay() { // not self — forcing the relay branch. let safe_neighbor = random_identifier_greater_than(&target); lt.update_entry( - Identity::new( - &safe_neighbor, - &random_membership_vector(), - random_address(), - ), + Identity::new(safe_neighbor, random_membership_vector(), random_address()), 0, Direction::Left, ) .expect("failed to update entry in lookup table"); let node_id = random_identifier(); - let search_request = IdSearchReq::new(RequestId::random(), node_id, target, 0, Direction::Left); + let search_request = IdSearchReq { + nonce: Nonce::random(), + origin: node_id, + target, + level: 0, + direction: Direction::Left, + }; let request_event = Event::SearchByIdRequest(search_request); let (expected_lvl, expected_identity) = lt .left_neighbors() .unwrap() .into_iter() - .filter(|(l, id)| *l <= search_request.level() && id.id() >= search_request.target()) - .min_by_key(|(_, id)| *id.id()) + .filter(|(l, id)| *l <= search_request.level && id.id() >= search_request.target) + .min_by_key(|(_, id)| id.id()) .unwrap(); let mock_net = Unimock::new(( @@ -54,8 +56,8 @@ fn test_search_by_id_networking_integration_relay() { .answers_arc(Arc::new( move |_, id: Identifier, event: Event| match event { Event::SearchByIdRequest(req) => { - assert_eq!(req.level(), expected_lvl); - assert_eq!(id, *expected_identity.id()); + assert_eq!(req.level, expected_lvl); + assert_eq!(id, expected_identity.id()); Ok(()) } _ => panic!("expected IdSearchRequest payload, got: {:?}", event), @@ -91,7 +93,13 @@ fn test_search_by_id_networking_integration_target_is_this_node() { let origin_id = random_identifier(); let node_id = random_identifier(); - let search_request = IdSearchReq::new(RequestId::random(), origin_id, node_id, 0, Direction::Left); + let search_request = IdSearchReq { + nonce: Nonce::random(), + origin: origin_id, + target: node_id, + level: 0, + direction: Direction::Left, + }; let request_event = Event::SearchByIdRequest(search_request); let mock_net = Unimock::new(( @@ -108,8 +116,7 @@ fn test_search_by_id_networking_integration_target_is_this_node() { "expected result to be to the originator's identifier" ); assert_eq!( - *res.result(), - node_id, + res.result, node_id, "expected result to be the node's identifier" ); Ok(()) diff --git a/src/node/skip_graph_integration_test.rs b/src/node/skip_graph_integration_test.rs index 2b15a0e..0aadc23 100644 --- a/src/node/skip_graph_integration_test.rs +++ b/src/node/skip_graph_integration_test.rs @@ -1,9 +1,15 @@ use super::base_node::BaseNode; use crate::core::model::direction::Direction; use crate::core::model::identity::Identity; -use crate::core::testutil::fixtures::{join_all_with_timeout, join_with_timeout, random_membership_vector, random_sorted_identifiers, span_fixture}; -use crate::core::{Address, ArrayLookupTable, IdSearchReq, Identifier, LookupTable, MembershipVector, LOOKUP_TABLE_LEVELS}; -use crate::core::model::search::RequestId; +use crate::core::model::search::Nonce; +use crate::core::testutil::fixtures::{ + join_all_with_timeout, join_with_timeout, random_membership_vector, random_sorted_identifiers, + span_fixture, +}; +use crate::core::{ + Address, ArrayLookupTable, IdSearchReq, Identifier, LookupTable, MembershipVector, + LOOKUP_TABLE_LEVELS, +}; use crate::network::mock::hub::NetworkHub; use crate::network::Network; use crate::node::core::BaseCore; @@ -96,7 +102,7 @@ impl LocalSkipGraph { } } - let mvs = nodes.iter().map(|n| *n.mem_vec()).collect(); + let mvs = nodes.iter().map(|n| n.mem_vec()).collect(); Ok(LocalSkipGraph { nodes, lts, @@ -118,13 +124,13 @@ fn test_lookup_tables_validity() { // find the max j < i: common_prefix_bit(m_i, m_j) ≥ level let expected_left: Option = (0..i) .rev() - .find(|&j| sg.mvs[i].common_prefix_bit(&sg.mvs[j]) >= level); + .find(|&j| sg.mvs[i].common_prefix_bit(sg.mvs[j]) >= level); - let expected_left_neighbor_id = expected_left.map(|j| *sg.nodes[j].id()); + let expected_left_neighbor_id = expected_left.map(|j| sg.nodes[j].id()); let actual_left_neighbor_id = lt .get_entry(level, Direction::Left) .expect("get_entry should never error") - .map(|identity| *identity.id()); + .map(|identity| identity.id()); assert_eq!( actual_left_neighbor_id, expected_left_neighbor_id, "left lookup table entry is not valid" @@ -132,12 +138,12 @@ fn test_lookup_tables_validity() { // find the min j > i: common_prefix_bit(m_i, m_j) >= level let expected_right: Option = - (i + 1..sg.nodes.len()).find(|&j| sg.mvs[i].common_prefix_bit(&sg.mvs[j]) >= level); - let expected_right_neighbor_id = expected_right.map(|j| *sg.nodes[j].id()); + (i + 1..sg.nodes.len()).find(|&j| sg.mvs[i].common_prefix_bit(sg.mvs[j]) >= level); + let expected_right_neighbor_id = expected_right.map(|j| sg.nodes[j].id()); let actual_right_neighbor_id = lt .get_entry(level, Direction::Right) .expect("get_entry should never error") - .map(|identity| *identity.id()); + .map(|identity| identity.id()); assert_eq!( actual_right_neighbor_id, expected_right_neighbor_id, "right lookup table entry is not valid" @@ -167,9 +173,17 @@ fn test_skip_graph_search_by_id() { let target_id = sg.identifiers[7]; let handle = std::thread::spawn(move || { - let id_search_req = IdSearchReq::new(RequestId::random(), *origin_node.id(), target_id, LOOKUP_TABLE_LEVELS - 1, Direction::Right); - let result = origin_node.search_by_id(&id_search_req).expect("failed to search by id"); - assert_eq!(*result.result(), target_id); + let id_search_req = IdSearchReq { + nonce: Nonce::random(), + target: target_id, + origin: origin_node.id(), + level: LOOKUP_TABLE_LEVELS - 1, + direction: Direction::Right, + }; + let result = origin_node + .search_by_id(id_search_req) + .expect("failed to search by id"); + assert_eq!(result.result, target_id); }); join_with_timeout(handle, std::time::Duration::from_secs(10)) @@ -186,14 +200,24 @@ fn test_skip_graph_search_by_id_concurrent() { let origin_node = origin_node.clone(); let target_id = sg.identifiers[i]; let handle = std::thread::spawn(move || { - let id_search_req = IdSearchReq::new(RequestId::random(), *origin_node.id(), target_id, LOOKUP_TABLE_LEVELS - 1, Direction::Right); - let result = origin_node.search_by_id(&id_search_req).expect("failed to search by id"); - assert_eq!(*result.result(), target_id); + let id_search_req = IdSearchReq { + nonce: Nonce::random(), + target: target_id, + origin: origin_node.id(), + level: LOOKUP_TABLE_LEVELS - 1, + direction: Direction::Right, + }; + let result = origin_node + .search_by_id(id_search_req) + .expect("failed to search by id"); + assert_eq!(result.result, target_id); }); handles.push(handle); } - join_all_with_timeout(handles.into_boxed_slice(), std::time::Duration::from_secs(10)) - .expect("search_by_id did not complete within timeout (likely deadlocked)"); + join_all_with_timeout( + handles.into_boxed_slice(), + std::time::Duration::from_secs(10), + ) + .expect("search_by_id did not complete within timeout (likely deadlocked)"); } - diff --git a/tests/test_debug_hex_format.rs b/tests/test_debug_hex_format.rs index c0db429..2be3a35 100644 --- a/tests/test_debug_hex_format.rs +++ b/tests/test_debug_hex_format.rs @@ -1,48 +1,64 @@ -use skipgraph::core::{Identifier, MembershipVector, Address}; use skipgraph::core::model::identity::Identity; +use skipgraph::core::{Address, Identifier, MembershipVector}; #[test] fn test_identifier_debug_shows_hex_not_raw_bytes() { - - let id_bytes = [69, 11, 103, 102, 141, 75, 166, 128, 3, 116, 40, 7, 102, 211, 4, 44, 26, 234, 34, 150, 21, 99, 236, 216, 142, 116, 70, 33, 143, 133, 174, 83]; + let id_bytes = [ + 69, 11, 103, 102, 141, 75, 166, 128, 3, 116, 40, 7, 102, 211, 4, 44, 26, 234, 34, 150, 21, + 99, 236, 216, 142, 116, 70, 33, 143, 133, 174, 83, + ]; let identifier = Identifier::from_bytes(&id_bytes).unwrap(); - + let debug_output = format!("{:?}", identifier); let expected_hex = hex::encode(id_bytes); - + // Should show hex format, not raw byte array assert_eq!(debug_output, expected_hex); - assert_eq!(debug_output, "450b67668d4ba6800374280766d3042c1aea22961563ecd88e7446218f85ae53"); - + assert_eq!( + debug_output, + "450b67668d4ba6800374280766d3042c1aea22961563ecd88e7446218f85ae53" + ); } #[test] fn test_membership_vector_debug_shows_hex_not_raw_bytes() { - let mem_vec_bytes = [81, 77, 192, 82, 129, 173, 87, 224, 233, 181, 134, 100, 170, 151, 59, 27, 241, 80, 96, 46, 54, 235, 57, 31, 97, 14, 136, 195, 63, 101, 157, 240]; + let mem_vec_bytes = [ + 81, 77, 192, 82, 129, 173, 87, 224, 233, 181, 134, 100, 170, 151, 59, 27, 241, 80, 96, 46, + 54, 235, 57, 31, 97, 14, 136, 195, 63, 101, 157, 240, + ]; let mem_vec = MembershipVector::from_bytes(&mem_vec_bytes).unwrap(); - + let debug_output = format!("{:?}", mem_vec); let expected_hex = hex::encode(mem_vec_bytes); - + // Should show hex format, not raw byte array assert_eq!(debug_output, expected_hex); - assert_eq!(debug_output, "514dc05281ad57e0e9b58664aa973b1bf150602e36eb391f610e88c33f659df0"); + assert_eq!( + debug_output, + "514dc05281ad57e0e9b58664aa973b1bf150602e36eb391f610e88c33f659df0" + ); } #[test] fn test_identity_debug_shows_hex_format_for_components() { - let id_bytes = [69, 11, 103, 102, 141, 75, 166, 128, 3, 116, 40, 7, 102, 211, 4, 44, 26, 234, 34, 150, 21, 99, 236, 216, 142, 116, 70, 33, 143, 133, 174, 83]; - let mem_vec_bytes = [81, 77, 192, 82, 129, 173, 87, 224, 233, 181, 134, 100, 170, 151, 59, 27, 241, 80, 96, 46, 54, 235, 57, 31, 97, 14, 136, 195, 63, 101, 157, 240]; - + let id_bytes = [ + 69, 11, 103, 102, 141, 75, 166, 128, 3, 116, 40, 7, 102, 211, 4, 44, 26, 234, 34, 150, 21, + 99, 236, 216, 142, 116, 70, 33, 143, 133, 174, 83, + ]; + let mem_vec_bytes = [ + 81, 77, 192, 82, 129, 173, 87, 224, 233, 181, 134, 100, 170, 151, 59, 27, 241, 80, 96, 46, + 54, 235, 57, 31, 97, 14, 136, 195, 63, 101, 157, 240, + ]; + let identifier = Identifier::from_bytes(&id_bytes).unwrap(); let mem_vec = MembershipVector::from_bytes(&mem_vec_bytes).unwrap(); let address = Address::new("localhost", "8080"); - let identity = Identity::new(&identifier, &mem_vec, address); - + let identity = Identity::new(identifier, mem_vec, address); + let debug_output = format!("{:?}", identity); let expected_id_hex = hex::encode(id_bytes); let expected_mem_vec_hex = hex::encode(mem_vec_bytes); - + // Should contain hex representations of both identifier and membership vector assert_eq!( debug_output, @@ -52,26 +68,30 @@ fn test_identity_debug_shows_hex_format_for_components() { ) ); - assert_eq!(debug_output, - "Identity { \ + assert_eq!( + debug_output, + "Identity { \ id: 450b67668d4ba6800374280766d3042c1aea22961563ecd88e7446218f85ae53, \ mem_vec: 514dc05281ad57e0e9b58664aa973b1bf150602e36eb391f610e88c33f659df0, \ address: localhost:8080 \ - }"); - + }" + ); } #[test] fn test_debug_format_consistency_with_display() { // Test that Debug format matches Display format for individual components - let id_bytes = [255, 0, 128, 64, 32, 16, 8, 4, 2, 1, 0, 255, 128, 64, 32, 16, 8, 4, 2, 1, 255, 0, 128, 64, 32, 16, 8, 4, 2, 1, 0, 255]; + let id_bytes = [ + 255, 0, 128, 64, 32, 16, 8, 4, 2, 1, 0, 255, 128, 64, 32, 16, 8, 4, 2, 1, 255, 0, 128, 64, + 32, 16, 8, 4, 2, 1, 0, 255, + ]; let identifier = Identifier::from_bytes(&id_bytes).unwrap(); let mem_vec = MembershipVector::from_bytes(&id_bytes).unwrap(); - + // Debug format should match Display format assert_eq!(format!("{:?}", identifier), format!("{}", identifier)); assert_eq!(format!("{:?}", mem_vec), format!("{}", mem_vec)); - + // Both should be hex encoded let expected_hex = hex::encode(id_bytes); assert_eq!(format!("{:?}", identifier), expected_hex); @@ -86,17 +106,26 @@ fn test_various_byte_patterns_show_as_hex() { let all_zeros = [0u8; 32]; let id_zeros = Identifier::from_bytes(&all_zeros).unwrap(); let debug_zeros = format!("{:?}", id_zeros); - assert_eq!(debug_zeros, "0000000000000000000000000000000000000000000000000000000000000000"); - + assert_eq!( + debug_zeros, + "0000000000000000000000000000000000000000000000000000000000000000" + ); + // Test edge cases: all 255s let all_255s = [255u8; 32]; let id_255s = Identifier::from_bytes(&all_255s).unwrap(); let debug_255s = format!("{:?}", id_255s); - assert_eq!(debug_255s, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); - + assert_eq!( + debug_255s, + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + ); + // Test mixed pattern - let mixed = [0, 255, 128, 64, 32, 16, 8, 4, 2, 1, 170, 85, 240, 15, 204, 51, 0, 255, 128, 64, 32, 16, 8, 4, 2, 1, 170, 85, 240, 15, 204, 51]; + let mixed = [ + 0, 255, 128, 64, 32, 16, 8, 4, 2, 1, 170, 85, 240, 15, 204, 51, 0, 255, 128, 64, 32, 16, 8, + 4, 2, 1, 170, 85, 240, 15, 204, 51, + ]; let id_mixed = Identifier::from_bytes(&mixed).unwrap(); let debug_mixed = format!("{:?}", id_mixed); assert_eq!(debug_mixed, hex::encode(mixed)); -} \ No newline at end of file +} From 9006f827fa9b6d1fb3f360b1fa0ea42cc637ed35 Mon Sep 17 00:00:00 2001 From: TheP2P <19204398+thep2p@users.noreply.github.com> Date: Tue, 16 Jun 2026 19:02:54 -0700 Subject: [PATCH 3/6] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/node/core_test.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node/core_test.rs b/src/node/core_test.rs index a397013..fa98371 100644 --- a/src/node/core_test.rs +++ b/src/node/core_test.rs @@ -37,7 +37,7 @@ fn test_search_by_id_singleton_fallback() { nonce: Nonce::random(), origin: origin_id, target, - level: 0, + level: 3, direction, }; let res = core.search_by_id(req).expect("search failed"); From 1b6b7886d14fe3c08cf6b4fe33f96433ce84df13 Mon Sep 17 00:00:00 2001 From: yahya <19204398+yhassanzadeh13@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:31:47 -0700 Subject: [PATCH 4/6] fix: remove nonce from request_id_map on recv error in search_by_id Prevents a map entry leak when the response channel disconnects before a result is delivered. Co-Authored-By: Claude Sonnet 4.6 --- src/node/base_node.rs | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/node/base_node.rs b/src/node/base_node.rs index 45748ed..db39acd 100644 --- a/src/node/base_node.rs +++ b/src/node/base_node.rs @@ -118,15 +118,25 @@ impl BaseNode { return Err(anyhow!("failed to perform search by id {}", e)); } tracing::info!("relayed search by id request to the next node, pending response"); - let net_result = rx - .recv() - .map_err(|_| anyhow!("failed to receive response for search by id"))?; - tracing::info!( - "received network response for search by id {:?}: {:?}", - req.target, - net_result.result - ); - Ok(net_result) + match rx.recv() { + Ok(net_result) => { + tracing::info!( + "received network response for search by id {:?}: {:?}", + req.target, + net_result.result + ); + Ok(net_result) + } + Err(_) => { + self.request_id_map + .lock() + .expect("mutex was poisoned by a previous panic") + .remove(&req.nonce); + Err(anyhow!( + "failed to receive network response for search by id" + )) + } + } } } From 75316d88798a8622006e893c81fb75526b76c306 Mon Sep 17 00:00:00 2001 From: yahya <19204398+yhassanzadeh13@users.noreply.github.com> Date: Thu, 18 Jun 2026 08:32:01 -0700 Subject: [PATCH 5/6] ci: pin @claude action to claude-opus-4-8 The action's built-in default model (claude-sonnet-4-20250514) has been retired and now returns a 404 not_found_error, failing the @claude job. Pin an explicit, current Opus model. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/claude.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index bc77307..46f8aed 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -40,8 +40,9 @@ jobs: additional_permissions: | actions: read - # Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1) - # model: "claude-opus-4-1-20250805" + # Pin the model explicitly: the action's built-in default model has been + # retired and now returns a 404 not_found_error. + model: "claude-opus-4-8" # Optional: Customize the trigger phrase (default: @claude) # trigger_phrase: "/claude" From da13d00d33420a9f43005cc9828bf7f6af3abaf1 Mon Sep 17 00:00:00 2001 From: yahya <19204398+yhassanzadeh13@users.noreply.github.com> Date: Fri, 19 Jun 2026 19:28:08 -0700 Subject: [PATCH 6/6] refactor: use struct update syntax for relay request construction Co-Authored-By: Claude Sonnet 4.6 --- src/node/base_node.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/node/base_node.rs b/src/node/base_node.rs index db39acd..c57f824 100644 --- a/src/node/base_node.rs +++ b/src/node/base_node.rs @@ -179,11 +179,8 @@ impl EventProcessorCore for BaseNode { } let relay_request = SearchByIdRequest(IdSearchReq { - nonce: req.nonce, - target: req.target, - origin: req.origin, level: res.termination_level, - direction: req.direction, + ..req }); self.net