Commit Graph

37 Commits

Author SHA1 Message Date
Joseph Doherty
f36bc3111b feat(batch15): complete group 1 msgblock/consumerfilestore 2026-02-28 17:03:31 -05:00
Joseph Doherty
5367c3f34d feat(batch14): complete filestore write lifecycle features and tests 2026-02-28 16:41:31 -05:00
Joseph Doherty
045faf7423 feat(batch14): complete group3 purge compact state and wave3 tests 2026-02-28 15:43:05 -05:00
Joseph Doherty
9a35e2dfc5 feat(batch14): complete group2 lifecycle checks and wave2 tests 2026-02-28 15:27:32 -05:00
Joseph Doherty
4f0a7f40fc feat(batch14): complete group1 write path and wave1 tests 2026-02-28 15:10:46 -05:00
Joseph Doherty
cda4c0c5b6 feat(batch13): port filestore all-last-seqs and filter-is-all helpers 2026-02-28 14:49:00 -05:00
Joseph Doherty
3d2638dfaa feat(batch13): port filestore filtered-pending query helpers 2026-02-28 14:45:14 -05:00
Joseph Doherty
430ba17f42 feat(batch13): port filestore skip-first-block query helpers 2026-02-28 14:36:58 -05:00
Joseph Doherty
b918c654d0 feat(batch12): complete filestore recovery 2026-02-28 14:27:00 -05:00
Joseph Doherty
d55bb3ef19 feat(batch12): complete group1 filestore recovery 2026-02-28 14:22:16 -05:00
Joseph Doherty
8512515add feat(batch11): complete filestore init feature and test port 2026-02-28 14:09:22 -05:00
Joseph Doherty
0b3fe7d78a feat(batch11): complete group2 filestore state and utility paths 2026-02-28 13:57:10 -05:00
Joseph Doherty
cbef52bb34 feat(batch11): complete group1 filestore init 2026-02-28 13:38:56 -05:00
Joseph Doherty
59085ba9ea feat(batch8): implement store enum parity group B 2026-02-28 11:53:44 -05:00
Joseph Doherty
cfb49ef477 feat(batch8): implement store codec/helpers parity group A 2026-02-28 11:49:13 -05:00
Joseph Doherty
dc90025a37 feat(batch5): implement jetstream error constructors group11 2026-02-28 09:05:27 -05:00
Joseph Doherty
a15c8131cc feat(batch5): implement jetstream error constructors group10 2026-02-28 09:00:03 -05:00
Joseph Doherty
eee3a431dd feat(batch5): implement jetstream error constructors group09 2026-02-28 08:55:28 -05:00
Joseph Doherty
b96d3ae182 feat(batch5): implement jetstream error constructors group08 2026-02-28 08:51:21 -05:00
Joseph Doherty
a587e8e347 feat(batch5): implement jetstream error constructors group07 2026-02-28 08:47:21 -05:00
Joseph Doherty
aab2814201 feat(batch5): implement jetstream error constructors group06 2026-02-28 08:43:42 -05:00
Joseph Doherty
bc085a7da1 feat(batch5): implement jetstream error constructors group05 2026-02-28 08:40:12 -05:00
Joseph Doherty
e914b468b6 feat(batch5): implement jetstream error constructors group04 2026-02-28 08:36:38 -05:00
Joseph Doherty
802e3d6576 feat(batch5): implement jetstream error constructors group03 2026-02-28 08:32:48 -05:00
Joseph Doherty
35488a2b68 feat(batch5): implement jetstream error constructors group02 2026-02-28 08:29:20 -05:00
Joseph Doherty
9f30fe6033 feat(batch5): implement jetstream error helpers and group01 constructors 2026-02-28 08:25:56 -05:00
Joseph Doherty
c2a73b49f7 feat(batch2): verify memstore remainder features 2026-02-28 07:17:01 -05:00
Joseph Doherty
a660e38575 Implement deferred WaitQueue, DiskAvailability, and NoOpCache behavior with tests 2026-02-27 09:58:37 -05:00
Joseph Doherty
8849265780 Eliminate PortTracker stub backlog by implementing Raft/file-store/stream/server/client/OCSP stubs and adding coverage. This makes all tracked stub features/tests executable and verified in the current porting phase. 2026-02-27 08:56:26 -05:00
Joseph Doherty
ba4f41cf71 feat: implement SubscriptionIndex + JetStreamMemStore cluster — 39 features verified
Add SubscriptionIndex factory methods, notification wrappers, and
ValidateMapping. Implement 24 MemStore methods (TTL, scheduling, SDM,
age-check, purge/compact/reset) with JetStream header helpers and
constants. Verified features: 987 → 1026.
2026-02-27 06:19:47 -05:00
Joseph Doherty
f0faaffe69 feat(p7-09): JetStream unit tests — versioning (12), dirstore (12), batching/errors deferred (66)
Port session P7-09: add tests from jetstream_versioning_test.go (T:1791–1808),
dirstore_test.go (T:285–296), jetstream_batching_test.go (T:716–744),
jetstream_errors_test.go (T:1381–1384), and accounts_test.go (T:80–110).

- JetStreamVersioningTests: 12 active unit tests + 6 deferred (server-required)
- DirectoryStoreTests: 12 filesystem tests using fake JWTs (no NKeys dependency)
- JetStreamBatchingTests: 29 deferred stubs (all require running JetStream cluster)
- JetStreamErrorsTests: 4 deferred stubs (NewJS* factories not yet ported)
- accounts_test.go T:80–110: 31 deferred (all use RunServerWithConfig)

Fix DirJwtStore.cs expiration bugs:
  - Use DateTimeOffset.UtcNow.UtcTicks (not Unix-relative ticks) for expiry comparison
  - Replace in-place JwtItem mutation with new-object replacement so DrainStale
    can detect stale heap entries via ReferenceEquals check

Add JetStreamVersioning.cs methods: SetStaticStreamMetadata,
SetDynamicStreamMetadata, CopyStreamMetadata, SetStaticConsumerMetadata,
SetDynamicConsumerMetadata, SetDynamicConsumerInfoMetadata, CopyConsumerMetadata.

Tests: 725 pass, 53 skipped/deferred, 0 failures.
DB: +24 complete, +66 deferred.
2026-02-26 20:02:00 -05:00
Joseph Doherty
0950580967 feat(p7-06): port memstore & store interface tests (38 tests)
Add JetStreamMemoryStoreTests (27 tests, T:2023-2056) and
StorageEngineTests (11 tests, T:2943-2957) covering the JetStream
memory store and IStreamStore interface. Fix 10 bugs in MemStore.cs
discovered during test authoring: FirstSeq constructor, Truncate(0)
SubjectTree reset, PurgeEx subject-filtered implementation,
UpdateConfig MaxMsgsPer enforcement, FilteredStateLocked partial
range scan, StoreRawMsgLocked DiscardNewPer, MultiLastSeqs maxSeq
fallback scan + LastNeedsUpdate recalculation, AllLastSeqs
LastNeedsUpdate recalculation, LoadLastLocked LazySubjectState
recalculation, GetSeqFromTime ts==last equality, and timestamp
precision (100-ns throughout). 20 tests deferred (internal fields,
benchmarks, TTL, filestore-only). All 701 unit tests pass.
2026-02-26 19:35:58 -05:00
Joseph Doherty
a58e8e2572 feat: port sessions 21-23 — Streams, Consumers, MQTT, WebSocket & OCSP
Session 21 (402 features, IDs 3195-3387, 584-792):
- JetStream/StreamTypes.cs: StreamInfo, ConsumerInfo, SequenceInfo,
  JSPubAckResponse, WaitQueue, ClusterInfo, PeerInfo, message types,
  ConsumerAction enum, CreateConsumerRequest, PriorityGroupState
- JetStream/NatsStream.cs: NatsStream class (stub methods, IDisposable)
- JetStream/NatsConsumer.cs: NatsConsumer class (stub methods, IDisposable)
- Updated JetStreamApiTypes.cs: removed duplicate StreamInfo/ConsumerInfo stubs

Session 22 (153 features, IDs 2252-2404):
- Mqtt/MqttConstants.cs: all MQTT protocol constants, packet types, flags
- Mqtt/MqttTypes.cs: MqttSession, MqttSubscription, MqttWill, MqttJsa,
  MqttAccountSessionManager, MqttHandler and supporting types
- Mqtt/MqttHandler.cs: per-client MQTT state, MqttServerExtensions stubs

Session 23 (97 features, IDs 3506-3543, 2443-2501):
- WebSocket/WebSocketConstants.cs: WsOpCode enum, frame bits, close codes
- WebSocket/WebSocketTypes.cs: WsReadInfo, SrvWebsocket (replaces stub),
  WebSocketHandler stubs
- Auth/Ocsp/OcspTypes.cs: OcspMode, OcspMonitor (replaces stub),
  IOcspResponseCache (replaces stub), NoOpCache, LocalDirCache

All features (3503 complete, 0 not_started). Phase 6 now at 58.9%.
2026-02-26 16:31:42 -05:00
Joseph Doherty
e6bc76b315 feat: port session 20 — JetStream Cluster & Raft types
Port IRaftNode (37-method interface), Raft, RaftState, EntryType, Entry,
AppendEntry, CommittedEntry, VoteRequest/VoteResponse, PeerState from
jetstream_cluster.go; JetStreamCluster, StreamAssignment, ConsumerAssignment,
EntryOp (19 values) and supporting types from jetstream_cluster.go.

Removes IRaftNode stub from NatsServerTypes.cs.
429 features marked complete (IDs 2599-2796, 1520-1750).
2026-02-26 16:23:39 -05:00
Joseph Doherty
84d450b4a0 feat: port session 19 — JetStream Core
- JetStreamTypes: JetStreamConfig, JetStreamStats, JetStreamAccountLimits,
  JetStreamTier, JetStreamAccountStats, JetStream engine, JsAccount, JsaUsage
- JetStreamApiTypes: 50+ JSApi request/response types, API subject constants
- JetStreamErrors: JsApiError + JsApiErrors with all 203 error codes
- JetStreamVersioning: version constants and API level helpers
- JetStreamBatching: Batching, BatchGroup, BatchStagedDiff, BatchApply
- Removed JetStreamConfig/JetStreamState stubs from NatsServerTypes.cs
- 374 features complete (IDs 1368-1519, 1751-1972)
2026-02-26 16:14:40 -05:00
Joseph Doherty
3cffa5b156 feat: port session 18 — JetStream File Store
- FileStoreTypes: FileStoreConfig, FileStreamInfo, FileConsumerInfo, Psi,
  Cache, MsgId, CompressionInfo, ErrBadMsg, FileStoreDefaults constants
- FileStore: JetStreamFileStore implementing IStreamStore (26 methods stubbed)
  with State/Type/Stop/Register* properly implemented
- MessageBlock: MessageBlock type with all 40+ fields, ConsumerFileStore stub
- 312 features complete (IDs 951-1262)
2026-02-26 16:06:50 -05:00
Joseph Doherty
5a2c8a3250 feat: port session 17 — Store Interfaces & Memory Store
- StoreTypes: IStreamStore/IConsumerStore interfaces, StreamConfig/ConsumerConfig,
  all enums (StorageType, RetentionPolicy, DiscardPolicy, AckPolicy, etc.),
  StreamState, SimpleState, LostStreamData, DeleteBlocks/Range/Slice, StoreMsg
- MemStore: JetStreamMemStore with full message CRUD, state tracking, age expiry
- ConsumerMemStore: ConsumerMemStore with delivery/ack state tracking
- DiskAvailability: cross-platform disk space checker
- 135 features complete (IDs 3164-3194, 2068-2165, 827-832)
2026-02-26 16:02:03 -05:00