feat(#333): exact ReadProjectionProgressAsync(ShardName) overload + JasperFx 2.29.0#334
Merged
Merged
Conversation
…asperFx 2.29.0 jasperfx#529 (JasperFx.Events 2.29.0) adds an exact per-cell progression read alongside the existing (projectionName, tenantId) overload. Implement it on PolecatDatabase as a straight `WHERE name = @name.Identity` lookup against pc_event_progression — no version/shard collapsing, so a blue/green deploy's versions, a sliced projection's shard keys, and per-tenant partitions each address their own row. A ShardKey of "All" is the projection's global cell. heartbeat + agent_status are read only under EnableExtendedProgressionTracking (else null), mirroring the existing overload. Purely additive — the existing (projectionName, tenantId) overload is untouched, no public API changes. Bumps the JasperFx packages 2.28.0 -> 2.29.0 (RuntimeCompiler stays 5.0.0). Adds projection_progression_tests coverage for the exact overload: reads the exact row, returns null for an unknown identity, and targets the exact version/tenant (not the newest). Closes #333. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XKKBPsFJ83jd2o4hyGJnj6
jeremydmiller
added a commit
that referenced
this pull request
Jul 17, 2026
Ships #333/#334: the exact ReadProjectionProgressAsync(ShardName) overload on IEventDatabase (jasperfx#529), on JasperFx.Events 2.29.0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XKKBPsFJ83jd2o4hyGJnj6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the exact per-cell progression read from JasperFx/jasperfx#529 (JasperFx.Events 2.29.0) on
PolecatDatabase.What
ReadProjectionProgressAsync(ShardName name, CancellationToken)— a straightWHERE name = @name.Identitylookup againstpc_event_progression, no version/shard collapsing (the caller supplies the fullShardName). A blue/green deploy's versions, a sliced projection's shard keys, and per-tenant partitions each address their own row;ShardKey == "All"is the projection's global cell.heartbeat/agent_statusare read only underEnableExtendedProgressionTracking(else null), mirroring the existing overload.Purely additive — the existing
(projectionName, tenantId)overload is untouched, no public API changes. Bumps JasperFx 2.28.0 → 2.29.0 (RuntimeCompiler stays 5.0.0).Tests
projection_progression_tests: the exact overload reads the exact row, returnsnullfor an unknown identity, and targets the exact version/tenant (not the newest). Compile-verified locally against 2.29.0; the integration run relies on CI's SQL Server (the local Azure-SQL-Edge/ARM container was too slow on the pre-login handshake).Note for reviewers
Polecat's existing
(projectionName, tenantId)overload treatsprojectionNameas the shard identity minus tenant ("Orders:All"), whereas Marten's treats it as the bare projection name ("Orders", collapsing across versions). This PR does not change that overload. The newShardNameoverload is identical across both stores and is the recommended unambiguous path — see the divergence note on jasperfx#435.Closes #333.
🤖 Generated with Claude Code