Repository navigation
Bump Marten to 9.7.3 (+ JasperFx 2.9.9) — fix tenant-partitioned composite catch-up under managed distribution - #3085
Conversation
…ite catch-up The pinned Marten 9.6.0 predates marten#4712 (high-water Timestamp under UseTenantPartitionedEvents). On 9.6.0 the store-global HighWaterAgent reads a default 0001-01-01 timestamp, computes a bogus safe-harbor, and never advances, so a composite projection stalls at its premature "0 to 1" optimized rebuild under UseWolverineManagedEventSubscriptionDistribution while a plain projection catches up. Marten 9.7.3 contains the fix and the scenario passes. Adds a regression test covering composite catch-up under managed distribution + tenant-partitioned events. Full wolverine.slnx builds clean against the bump. Closes JasperFx#3084
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a regression test to ensure composite projections catch up correctly under Wolverine-managed event subscription distribution when tenant-partitioned events are enabled, and updates Marten/JasperFx dependencies to versions containing the underlying high-water mark fix.
Changes:
- Added a new regression test covering composite projection catch-up across multiple managed tenants with
UseTenantPartitionedEvents. - Updated JasperFx packages to
2.9.9. - Updated Marten packages to
9.7.3.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| src/Persistence/MartenTests/Distribution/composite_catches_up_under_managed_distribution_with_partitioning.cs | Adds a regression test validating composite projections catch up for tenant-partitioned events under Wolverine-managed distribution. |
| Directory.Packages.props | Bumps JasperFx and Marten package versions to pick up fixes needed by the regression scenario. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| using JasperFx; | ||
| using JasperFx.CodeGeneration; | ||
| using JasperFx.Core; | ||
| using JasperFx.Events; | ||
| using JasperFx.Events.Projections; |
| for (var i = 0; i < StreamsPerTenant; i++) | ||
| { | ||
| var id = Guid.NewGuid(); | ||
| session.Events.StartStream<CsTrip>(id, new TripStarted(id), new TripLeg(1.0), new TripLeg(2.5)); |
Note on the failing CI checks — unrelated to this bumpThe red This is a newly-published advisory for MessagePack 3.1.3, which is pinned repo-wide in So the failures are orthogonal to the Marten 9.6.0 → 9.7.3 bump. Locally the full |
Bump Marten to 9.7.3 — fix tenant-partitioned composite catch-up (rebase of #3085)
|
Rebased onto current main and merged via #3105 (your authorship preserved via cherry-pick). main was already at JasperFx 2.9.10, so only the Marten 9.6.0 → 9.7.3 bump and your regression test were carried over. Thank you @erdtsieck! |
What
Bump the pinned Marten 9.6.0 → 9.7.3 and JasperFx 2.8.2 → 2.9.9 (the version 9.7.3 depends on), and add a regression test for composite projection catch-up under
UseWolverineManagedEventSubscriptionDistribution+ MartenUseTenantPartitionedEvents.Why
On the pinned Marten 9.6.0, a composite projection never catches up under the Wolverine-hosted daemon with tenant-partitioned events — it stays stuck at a premature
0 → 1optimized rebuild, while a plainSingleStreamProjectionin the same store catches up and Marten's own daemon handles the composite fine.Root cause is not in Wolverine's distribution layer. Marten 9.6.0 predates marten#4712 (high-water
Timestampunder tenant-partitioned events): the store-globalHighWaterAgentreads adefault(DateTimeOffset)=0001-01-01timestamp, computes a bogus safe-harbor (0001-01-01 + StaleSequenceThreshold), and never advances:Clean A/B, only the Marten version changed:
stale … 01/01/0001The full
wolverine.slnxbuilds clean against the bump (0 warnings / 0 errors).Closes #3084. Supersedes #3083 (which assumed a Wolverine-layer bug).