Bump JasperFx alphas + unskip rebuild_the_projection_skip_failed_events#4483
Merged
Merged
Conversation
JasperFx PR #306 ("Wrap per-event in SG DetermineActionAsync overrides, closes #305") shipped in the new wave: - JasperFx 2.0.0-alpha.14 → 2.0.0-alpha.15 - JasperFx.Events 2.0.0-alpha.13 → 2.0.0-alpha.14 - JasperFx.Events.SourceGenerator 2.0.0-alpha.6 → 2.0.0-alpha.7 - JasperFx.RuntimeCompiler 5.0.0-alpha.2 → 5.0.0-alpha.3 - JasperFx.SourceGeneration 2.0.0-alpha.2 → 2.0.0-alpha.4 #305 was the regression I filed yesterday in #4482: PR #304's per-event ApplyEventException wrapping was correct inside JasperFxAggregationProjectionBase but the SG-emitted DetermineActionAsync overrides weren't covered, so raw InvalidOperationException still surfaced through the AggregateException AggregationRunner.BuildBatchAsync throws, and GroupedProjectionExecution.buildBatchWithSkipping's OfType<ApplyEventException>() filter emptied out. PR #306 wraps each per-event call inside the SG's DetermineActionAsync override emission, restoring the seam end-to-end. Verified locally with DISABLE_TEST_PARALLELIZATION=true (CI default): all 4 tests in rebuilds_with_serialization_or_poison_pill_events pass on both net9.0 and net10.0, including both Theory inline cases (*DEFAULT*, CustomTenant) of rebuild_the_projection_skip_failed_events. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 19, 2026
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.
Summary
Companion to #4482. JasperFx PR #306 — "Wrap per-event in SG DetermineActionAsync overrides (closes #305)" — shipped in the new alpha wave. This PR consumes those packages and unskips the remaining post-Phase-2 daemon test.
Why #306 was needed
After PR #304 (alpha.13), the per-event
ApplyEventExceptionwrapping was in place insideJasperFxAggregationProjectionBase._buildAction, but the SG-emittedDetermineActionAsyncoverrides on individual projections weren't covered. So when a poison-pill event threw, the rawInvalidOperationExceptionstill propagated up through theAggregateExceptionAggregationRunner.BuildBatchAsyncthrows, andGroupedProjectionExecution.buildBatchWithSkipping'sOfType<ApplyEventException>()filter emptied out — no events got skipped, the shard timed out. I filed jasperfx#305 with the diagnosis; PR #306 wraps each per-event call inside the SG'sDetermineActionAsyncemission and restores the seam end-to-end.Pin bumps
Test plan
DISABLE_TEST_PARALLELIZATION=true dotnet test src/DaemonTests/DaemonTests.csproj --filter "FullyQualifiedName~rebuild_the_projection_skip_failed_events"— both Theory inline cases (*DEFAULT*,CustomTenant) pass on net9.0 and net10.0.DISABLE_TEST_PARALLELIZATION=true dotnet test src/DaemonTests/DaemonTests.csproj --filter "FullyQualifiedName~rebuilds_with_serialization_or_poison_pill_events"— all 4 tests in the class pass on both frameworks.🤖 Generated with Claude Code