From 9dfea97e1841272e727dfa5423be306344b9eaeb Mon Sep 17 00:00:00 2001 From: geoffsee <> Date: Sun, 15 Jun 2025 16:12:35 -0400 Subject: [PATCH] Add logging to peer connection and synchronization processes --- README.md | 8 ++++++++ crates/gsio-node/src/main.rs | 7 +++++++ crates/gsio-node/src/p2p.rs | 5 +++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d644da0..b1f4775 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ [![Tests](https://github.com/seemueller-io/gsio-net/actions/workflows/main.yml/badge.svg)](https://github.com/seemueller-io/gsio-net/actions/workflows/main.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) +Warning: This API is unstable. + +## run a network +```yaml +docker compose build +docker compose up +``` + ## License This project is licensed under the MIT License - see the LICENSE file for details. diff --git a/crates/gsio-node/src/main.rs b/crates/gsio-node/src/main.rs index 62e302a..6e511ed 100644 --- a/crates/gsio-node/src/main.rs +++ b/crates/gsio-node/src/main.rs @@ -195,6 +195,7 @@ async fn on_peer_message( /// ---- Individual peer-message helpers ---- async fn handle_peer_discovered(socket: SocketRef, p2p: Arc, data: &JsonValue) { if let Some(peer_id) = data.get("peer_id").and_then(|id| id.as_str()) { + info!(peer_id = peer_id, "Peer discovered, initiating peering"); p2p.ledger.add_known_node(peer_id.to_owned()); socket .emit( @@ -207,10 +208,12 @@ async fn handle_peer_discovered(socket: SocketRef, p2p: Arc, data: & async fn handle_advertise(socket: SocketRef, p2p: Arc, data: &JsonValue) { if let Some(peer_id) = data.get("peer_id").and_then(|id| id.as_str()) { + info!(peer_id = peer_id, "Received peer advertisement, establishing connection"); p2p.ledger.add_known_node(peer_id.to_owned()); socket .emit("peer_ack", &json!({ "type": "ack", "peer_id": p2p.node_id() })) .ok(); + info!(peer_id = peer_id, "Sent acknowledgment to peer, connection established"); socket .emit( "peer_sync_request", @@ -235,6 +238,10 @@ async fn handle_sync_request(socket: SocketRef, p2p: Arc, _data: &Js } async fn handle_sync_response(_socket: SocketRef, p2p: Arc, data: &JsonValue) { + if let Some(peer_id) = data.get("peer_id").and_then(|id| id.as_str()) { + info!(peer_id = peer_id, "Received sync response from peer, peering active"); + } + if let Some(entries_val) = data.get("entries") { if let Ok(entries) = serde_json::from_value::>(entries_val.clone()) { for e in entries { diff --git a/crates/gsio-node/src/p2p.rs b/crates/gsio-node/src/p2p.rs index 2aaba18..33bc667 100644 --- a/crates/gsio-node/src/p2p.rs +++ b/crates/gsio-node/src/p2p.rs @@ -123,18 +123,19 @@ impl P2PManager { /// Handle a new connection from another node pub fn handle_connection(&self, socket: SocketRef, data: JsonValue) { - info!(ns = socket.ns(), ?socket.id, "P2P node connected"); - // Extract the node ID from the connection data let node_id = match data.get("node_id") { Some(id) => id.as_str().unwrap_or("unknown").to_string(), None => "unknown".to_string(), }; + info!(ns = socket.ns(), ?socket.id, node_id = node_id, "P2P node connected, establishing peering"); + // Add the node to the connected nodes { let mut connected_nodes = self.connected_nodes.lock().unwrap(); connected_nodes.insert(node_id.clone(), socket.clone()); + info!(peer_id = node_id, "Successfully peered with node"); } // Add the node to the known nodes in the ledger