Joseph Doherty
17731e2af5
feat(storage): add binary message record encoding (Go parity)
...
Add MessageRecord class with Encode/Decode for the binary wire format
used in JetStream file store blocks. Uses varint-encoded lengths,
XxHash64 checksums, and a flags byte for deletion markers.
Go reference: filestore.go:6720-6724, 8180-8250, 8770-8777
13 tests covering round-trip, headers, checksum validation, corruption
detection, varint encoding, deleted flag, empty/large payloads.
2026-02-24 12:12:15 -05:00
Joseph Doherty
9cc9888bb4
feat: add S2 compression and AEAD encryption for FileStore (Go parity)
...
Replace Deflate+XOR with IronSnappy S2 block compression and ChaCha20-Poly1305 / AES-256-GCM
AEAD encryption, matching golang/nats-server/server/filestore.go. Introduces FSV2 envelope
format alongside existing FSV1 for backward compatibility. Adds 55 new tests across
S2CodecTests, AeadEncryptorTests, and FileStoreV2Tests covering all 6 cipher×compression
permutations, tamper detection, and legacy format round-trips.
2026-02-24 06:29:34 -05:00
Joseph Doherty
2c9683e7aa
feat: upgrade JetStreamService to lifecycle orchestrator
...
Implements enableJetStream() semantics from golang/nats-server/server/jetstream.go:414-523.
- JetStreamService.StartAsync(): validates config, creates store directory
(including nested paths via Directory.CreateDirectory), registers all
$JS.API.> subjects, logs startup stats; idempotent on double-start
- JetStreamService.DisposeAsync(): clears registered subjects, marks not running
- New properties: RegisteredApiSubjects, MaxStreams, MaxConsumers, MaxMemory, MaxStore
- JetStreamOptions: adds MaxStreams and MaxConsumers limits (0 = unlimited)
- FileStoreConfig: removes duplicate StoreCipher/StoreCompression enum declarations
now that AeadEncryptor.cs owns them; updates defaults to NoCipher/NoCompression
- FileStoreOptions/FileStore: align enum member names with AeadEncryptor.cs
(NoCipher, NoCompression, S2Compression) to fix cross-task naming conflict
- 13 new tests in JetStreamServiceOrchestrationTests covering all lifecycle paths
2026-02-24 06:03:46 -05:00
Joseph Doherty
921554f410
feat: define StreamStore/ConsumerStore interfaces from Go store.go
...
Port IStreamStore, IConsumerStore, StoreMsg, StreamState, SimpleState,
ConsumerState, FileStoreConfig, StoreCipher, StoreCompression types.
Rename Models.StreamState → ApiStreamState to avoid namespace conflict.
2026-02-23 21:06:16 -05:00
Joseph Doherty
56177a7099
feat: enforce filestore durability and recovery invariants
2026-02-23 14:51:30 -05:00
Joseph Doherty
3896512f84
feat: complete jetstream mirror source strict runtime parity
2026-02-23 14:50:18 -05:00
Joseph Doherty
377ad4a299
feat: complete jetstream deep operational parity closure
2026-02-23 13:43:14 -05:00
Joseph Doherty
2b64d762f6
feat: execute full-repo remaining parity closure plan
2026-02-23 13:08:52 -05:00
Joseph Doherty
b41e6ff320
feat: execute post-baseline jetstream parity plan
2026-02-23 12:11:19 -05:00
Joseph Doherty
8bce096f55
feat: complete final jetstream parity transport and runtime baselines
2026-02-23 11:04:43 -05:00
Joseph Doherty
f46b331921
feat: complete remaining jetstream parity implementation plan
2026-02-23 10:16:16 -05:00
Joseph Doherty
d73e7e2f88
feat: enforce jetstream retention and limits
2026-02-23 06:04:23 -05:00
Joseph Doherty
788f4254b0
feat: implement jetstream filestore recovery baseline
2026-02-23 06:00:42 -05:00
Joseph Doherty
64e3b1bd49
feat: implement jetstream memstore core behavior
2026-02-23 06:00:10 -05:00
Joseph Doherty
cae09f9091
feat: define jetstream storage interfaces
2026-02-23 05:59:39 -05:00