Joseph Doherty
4de691c9c5
perf: add FileStore buffered writes, O(1) state tracking, and eliminate redundant per-publish work
...
Implement Go-parity background flush loop (coalesce 16KB/8ms) in MsgBlock/FileStore,
replace O(n) GetStateAsync with incremental counters, skip PruneExpired/LoadAsync/
PrunePerSubject when not needed, and bypass RAFT for single-replica streams. Fix counter
tracking bugs in RemoveMsg/EraseMsg/TTL expiry and ObjectDisposedException races in
flush loop disposal. FileStore optimizations verified with 3112/3112 JetStream tests
passing; async publish benchmark remains at ~174 msg/s due to E2E protocol path bottleneck.
2026-03-13 03:11:11 -04:00
Joseph Doherty
95e9f0a92e
feat: wire remaining E2E gaps — account imports, subject transforms, JWT auth, service latency
...
Close all 5 server-side wiring gaps so E2E tests pass without skips:
- System events: bridge user-defined system_account to internal $SYS
- Account imports/exports: config parsing + reverse response import for cross-account request-reply
- Subject transforms: parse mappings config block, apply in ProcessMessage
- JWT auth: parse trusted_keys, resolver MEMORY, resolver_preload in config
- Service latency: timestamp on request, publish ServiceLatencyMsg on response
2026-03-12 23:03:12 -04:00
Joseph Doherty
c30e67a69d
Fix E2E test gaps and add comprehensive E2E + parity test suites
...
- Fix pull consumer fetch: send original stream subject in HMSG (not inbox)
so NATS client distinguishes data messages from control messages
- Fix MaxAge expiry: add background timer in StreamManager for periodic pruning
- Fix JetStream wire format: Go-compatible anonymous objects with string enums,
proper offset-based pagination for stream/consumer list APIs
- Add 42 E2E black-box tests (core messaging, auth, TLS, accounts, JetStream)
- Add ~1000 parity tests across all subsystems (gaps closure)
- Update gap inventory docs to reflect implementation status
2026-03-12 14:09:23 -04:00
Joseph Doherty
1a3fe91611
feat: enhance ConfigProcessor & add 110 Go-parity opts tests (Task 22)
...
Port configuration parsing for NKey users, gateway remotes, leaf node
remotes, auth timeout, write_deadline, websocket ping_interval, and
token+users conflict validation. Add RemoteGatewayOptions, enhanced
LeafNodeOptions with remotes support.
110 new tests ported from opts_test.go.
2026-02-24 20:17:48 -05:00
Joseph Doherty
a8985ecb1a
Merge branch 'codex/jetstream-full-parity-executeplan' into main
...
# Conflicts:
# differences.md
# docs/plans/2026-02-23-jetstream-full-parity-plan.md
# src/NATS.Server/Auth/Account.cs
# src/NATS.Server/Configuration/ConfigProcessor.cs
# src/NATS.Server/Monitoring/VarzHandler.cs
# src/NATS.Server/NatsClient.cs
# src/NATS.Server/NatsOptions.cs
# src/NATS.Server/NatsServer.cs
2026-02-23 08:53:44 -05:00
Joseph Doherty
a661e641c6
feat: add mqtt config model and parser for all Go MQTTOpts fields
2026-02-23 05:57:28 -05:00
Joseph Doherty
44d426a7c5
feat: parse cluster and jetstream config blocks
2026-02-23 05:43:04 -05:00
Joseph Doherty
8a2ded8e48
feat: add config processor mapping parsed config to NatsOptions
...
Port of Go server/opts.go processConfigFileLine switch. Maps parsed
NATS config dictionaries to NatsOptions fields including:
- Core options (port, host, server_name, limits, ping, write_deadline)
- Logging (debug, trace, logfile, log rotation)
- Authorization (single user, users array with permissions)
- TLS (cert/key/ca, verify, pinned_certs, handshake_first)
- Monitoring (http_port, https_port, http/https listen, base_path)
- Lifecycle (lame_duck_duration/grace_period)
- Server tags, file paths, system account options
Includes error collection (not fail-fast), duration parsing (ms/s/m/h
strings and numeric seconds), host:port listen parsing, and 56 tests
covering all config sections plus validation edge cases.
2026-02-23 04:47:54 -05:00