mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-10-06 12:09:07 +00:00
feat: improve logging for peer discovery and connection monitoring
This commit is contained in:
parent
2daa86bd3c
commit
26e2bbb477
@ -120,11 +120,17 @@ Create a robust, decentralized network platform that enables applications to sea
|
|||||||
```
|
```
|
||||||
network/
|
network/
|
||||||
├── cmd/ # Executables
|
├── cmd/ # Executables
|
||||||
│ ├── node/main.go # Network node (bootstrap via flag/auto)
|
│ ├── node/ # Network node (bootstrap via flag/auto)
|
||||||
|
│ │ ├── main.go # Entrypoint
|
||||||
|
│ │ └── configmap.go # Centralized flags/env → config mapping (flags > env > defaults)
|
||||||
│ └── cli/main.go # Command-line interface
|
│ └── cli/main.go # Command-line interface
|
||||||
├── pkg/ # Core packages
|
├── pkg/ # Core packages
|
||||||
│ ├── client/ # Client API and implementations
|
│ ├── client/ # Client API and implementations
|
||||||
│ │ ├── client.go # Main client implementation
|
│ │ ├── client.go # Main client (now slimmed)
|
||||||
|
│ │ ├── connect_bootstrap.go # Bootstrap helpers
|
||||||
|
│ │ ├── discovery_aggressive.go # Generic aggressive discovery
|
||||||
|
│ │ ├── monitoring.go # Connection monitoring
|
||||||
|
│ │ ├── pubsub_bridge.go # PubSub adapter bridge
|
||||||
│ │ ├── implementations.go # Database, storage, network implementations
|
│ │ ├── implementations.go # Database, storage, network implementations
|
||||||
│ │ └── interface.go # Public API interfaces
|
│ │ └── interface.go # Public API interfaces
|
||||||
│ ├── config/ # Configuration management
|
│ ├── config/ # Configuration management
|
||||||
@ -145,7 +151,10 @@ network/
|
|||||||
│ └── storage/ # Distributed storage
|
│ └── storage/ # Distributed storage
|
||||||
│ ├── client.go # Storage client
|
│ ├── client.go # Storage client
|
||||||
│ ├── protocol.go # Storage protocol
|
│ ├── protocol.go # Storage protocol
|
||||||
│ └── service.go # Storage service
|
│ ├── service.go # Service (struct/ctor/Close)
|
||||||
|
│ ├── rqlite_init.go # Schema initialization
|
||||||
|
│ ├── stream_handler.go # Stream handling
|
||||||
|
│ └── kv_ops.go # KV operation handlers
|
||||||
├── anchat/ # Example chat application
|
├── anchat/ # Example chat application
|
||||||
│ ├── cmd/cli/main.go # Chat CLI
|
│ ├── cmd/cli/main.go # Chat CLI
|
||||||
│ └── pkg/
|
│ └── pkg/
|
||||||
|
@ -460,6 +460,11 @@ Precedence: CLI flags > Environment variables > Code defaults. Set any of the fo
|
|||||||
- LOG_FORMAT: "json" | "console"
|
- LOG_FORMAT: "json" | "console"
|
||||||
- LOG_OUTPUT_FILE: path (empty = stdout)
|
- LOG_OUTPUT_FILE: path (empty = stdout)
|
||||||
|
|
||||||
|
### Centralized Flag/Env Mapping
|
||||||
|
|
||||||
|
Flag and environment variable mapping is centralized in `cmd/node/configmap.go` via `MapFlagsAndEnvToConfig`.
|
||||||
|
This enforces precedence (flags > env > defaults) consistently across the node startup path.
|
||||||
|
|
||||||
## CLI Commands
|
## CLI Commands
|
||||||
|
|
||||||
The CLI can still accept `--bootstrap <multiaddr>` to override discovery when needed.
|
The CLI can still accept `--bootstrap <multiaddr>` to override discovery when needed.
|
||||||
@ -511,6 +516,8 @@ The CLI can still accept `--bootstrap <multiaddr>` to override discovery when ne
|
|||||||
network/
|
network/
|
||||||
├── cmd/
|
├── cmd/
|
||||||
│ ├── node/ # Network node (bootstrap via flag)
|
│ ├── node/ # Network node (bootstrap via flag)
|
||||||
|
│ │ ├── main.go # Entrypoint
|
||||||
|
│ │ └── configmap.go # Centralized flags/env → config mapping
|
||||||
│ └── cli/ # Command-line interface
|
│ └── cli/ # Command-line interface
|
||||||
├── pkg/
|
├── pkg/
|
||||||
│ ├── client/ # Client library
|
│ ├── client/ # Client library
|
||||||
|
@ -120,6 +120,16 @@ func (c *Client) Connect() error {
|
|||||||
|
|
||||||
c.host = h
|
c.host = h
|
||||||
|
|
||||||
|
// Log host identity and listen addresses
|
||||||
|
addrs := c.host.Addrs()
|
||||||
|
addrStrs := make([]string, 0, len(addrs))
|
||||||
|
for _, a := range addrs { addrStrs = append(addrStrs, a.String()) }
|
||||||
|
c.logger.Info("LibP2P host created",
|
||||||
|
zap.String("peer_id", c.host.ID().String()),
|
||||||
|
zap.Int("listen_addr_count", len(addrStrs)),
|
||||||
|
zap.Strings("listen_addrs", addrStrs),
|
||||||
|
)
|
||||||
|
|
||||||
// Create LibP2P PubSub with enhanced discovery for Anchat
|
// Create LibP2P PubSub with enhanced discovery for Anchat
|
||||||
var ps *libp2ppubsub.PubSub
|
var ps *libp2ppubsub.PubSub
|
||||||
if c.config.AppName == "anchat" {
|
if c.config.AppName == "anchat" {
|
||||||
@ -219,6 +229,8 @@ func (c *Client) Connect() error {
|
|||||||
|
|
||||||
c.connected = true
|
c.connected = true
|
||||||
|
|
||||||
|
c.logger.Info("Client connected", zap.String("namespace", c.getAppNamespace()))
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,6 +272,8 @@ func (c *Client) Disconnect() error {
|
|||||||
|
|
||||||
c.connected = false
|
c.connected = false
|
||||||
|
|
||||||
|
c.logger.Info("Client disconnected")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,8 +17,10 @@ func (c *Client) startAggressivePeerDiscovery() {
|
|||||||
if !c.isConnected() { return }
|
if !c.isConnected() { return }
|
||||||
|
|
||||||
connectedPeers := c.host.Network().Peers()
|
connectedPeers := c.host.Network().Peers()
|
||||||
|
routingCount := 0
|
||||||
if c.dht != nil {
|
if c.dht != nil {
|
||||||
routingPeers := c.dht.RoutingTable().ListPeers()
|
routingPeers := c.dht.RoutingTable().ListPeers()
|
||||||
|
routingCount = len(routingPeers)
|
||||||
for _, pid := range routingPeers {
|
for _, pid := range routingPeers {
|
||||||
if pid == c.host.ID() { continue }
|
if pid == c.host.ID() { continue }
|
||||||
already := false
|
already := false
|
||||||
@ -28,7 +30,7 @@ func (c *Client) startAggressivePeerDiscovery() {
|
|||||||
pi := c.host.Peerstore().PeerInfo(pid)
|
pi := c.host.Peerstore().PeerInfo(pid)
|
||||||
if len(pi.Addrs) > 0 {
|
if len(pi.Addrs) > 0 {
|
||||||
if err := c.host.Connect(ctx, pi); err == nil {
|
if err := c.host.Connect(ctx, pi); err == nil {
|
||||||
c.logger.Debug("Connected to discovered peer", zap.String("peer", pid.String()[:8]+"..."))
|
c.logger.Debug("Connected to DHT peer", zap.String("peer", pid.String()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cancel()
|
cancel()
|
||||||
@ -36,7 +38,11 @@ func (c *Client) startAggressivePeerDiscovery() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if i%10 == 0 {
|
if i%10 == 0 {
|
||||||
c.logger.Debug("Peer discovery status", zap.Int("iteration", i+1), zap.Int("connected_peers", len(connectedPeers)))
|
c.logger.Debug("Peer discovery status",
|
||||||
|
zap.Int("iteration", i+1),
|
||||||
|
zap.Int("connected_peers", len(connectedPeers)),
|
||||||
|
zap.Int("routing_peers", routingCount),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package client
|
package client
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
// startConnectionMonitoring monitors connection health and logs status
|
// startConnectionMonitoring monitors connection health and logs status
|
||||||
func (c *Client) startConnectionMonitoring() {
|
func (c *Client) startConnectionMonitoring() {
|
||||||
@ -8,8 +10,10 @@ func (c *Client) startConnectionMonitoring() {
|
|||||||
ticker := time.NewTicker(30 * time.Second)
|
ticker := time.NewTicker(30 * time.Second)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
|
||||||
|
c.logger.Debug("Connection monitoring started")
|
||||||
for range ticker.C {
|
for range ticker.C {
|
||||||
if !c.isConnected() {
|
if !c.isConnected() {
|
||||||
|
c.logger.Debug("Connection monitoring stopped: client disconnected")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user