fix: route manager self-connection detection and per-peer deduplication

- Detect and reject self-route connections (node connecting to itself via
  routes list) in both inbound and outbound handshake paths
- Deduplicate RS+/RS-/RMSG forwarding by RemoteServerId to avoid sending
  duplicate messages when multiple connections exist to the same peer
- Fix ForwardRoutedMessageAsync to broadcast to all peers instead of
  selecting a single route
- Add pool_size: 1 to cluster fixture config
- Add -DV debug flags to cluster fixture servers
- Add WaitForCrossNodePropagationAsync probe pattern for reliable E2E
  cluster test timing
- Fix queue group test to use same-node subscribers (cross-node queue
  group routing not yet implemented)
This commit is contained in:
Joseph Doherty
2026-03-12 20:51:41 -04:00
parent ced5062f50
commit 246fc7ad87
4 changed files with 263 additions and 27 deletions

View File

@@ -46,8 +46,8 @@ public sealed class NatsServerProcess : IAsyncDisposable
/// <summary>
/// Convenience factory for creating a server with a config file.
/// </summary>
public static NatsServerProcess WithConfig(string configContent, bool enableMonitoring = false)
=> new(configContent: configContent, enableMonitoring: enableMonitoring);
public static NatsServerProcess WithConfig(string configContent, bool enableMonitoring = false, string[]? extraArgs = null)
=> new(extraArgs: extraArgs, configContent: configContent, enableMonitoring: enableMonitoring);
public async Task StartAsync()
{