All checks were successful
CI / verify (push) Successful in 2m33s
Add canonical operations/security/access/feature docs and fix path integrity to improve onboarding and incident readiness.
3.1 KiB
Executable File
3.1 KiB
Executable File
Remote Peer Configuration
Use IPeerManagementService to manage persistent remote peers and their pruning
tracking lifecycle at runtime.
Supported peer operations
- Add a static remote peer
- Remove a configured peer and tracking
- Remove tracking only (keep static peer config)
- Enable/disable a peer
- List all configured peers
Add a static peer
await peerManagement.AddStaticPeerAsync(
"branch-2",
"branch2.example.com:9000",
cancellationToken);
Peer lifecycle model
Peer management now has two independent dimensions:
- Remote peer configuration: whether a static peer exists in remote peer config.
- Peer confirmation tracking: whether the peer participates in peer-confirmed prune gating.
Common states:
- Enabled + tracked: normal operation, peer is eligible for sync and prune gating.
- Disabled + tracked: peer config retained, outbound static sync disabled, still counted as tracked until tracking is removed/deactivated.
- Enabled/disabled + untracked: peer config may remain, but peer is excluded from prune confirmation gating.
- Removed: peer config removed and tracking removed.
Remove tracking only (deprecate peer from pruning)
Use this when a peer should no longer gate pruning but you are not removing static configuration yet.
await peerManagement.RemovePeerTrackingAsync(
nodeId: "branch-2",
removeRemoteConfig: false,
cancellationToken);
Remove a peer and tracking (full removal)
RemoveRemotePeerAsync performs full cleanup by removing both peer tracking and
static peer configuration.
await peerManagement.RemoveRemotePeerAsync("branch-2", cancellationToken);
Equivalent explicit call:
await peerManagement.RemovePeerTrackingAsync(
nodeId: "branch-2",
removeRemoteConfig: true,
cancellationToken);
Enable or disable a peer
await peerManagement.DisablePeerAsync("branch-2", cancellationToken);
await peerManagement.EnablePeerAsync("branch-2", cancellationToken);
List configured peers
var peers = await peerManagement.GetAllRemotePeersAsync(cancellationToken);
foreach (var peer in peers)
{
Console.WriteLine($"{peer.NodeId} @ {peer.Address} ({peer.Type}) Enabled={peer.IsEnabled}");
}
Storage model
Remote peer configuration is persisted in the peer configuration store and synced across nodes as part of CBDDC metadata replication.
Fields stored per peer:
NodeIdAddressTypeIsEnabledInterestingCollections
Notes
- Authentication for sync handshakes is based on the cluster shared token (
AuthToken) from node configuration. - Disabled peers remain persisted but are excluded from active sync.
- Peer tracking removal is implemented as deactivation in the confirmation store, which removes the peer from active prune-gating.
- Re-observed peers can be re-registered and become active for tracking again.
- For rollout steps and production operations, see: