Skip to content

Bump JasperFx alphas + unskip rebuild_the_projection_skip_failed_events#4483

Merged
jeremydmiller merged 1 commit into
masterfrom
fix/305-unskip-rebuild-skip-failed-events
May 19, 2026
Merged

Bump JasperFx alphas + unskip rebuild_the_projection_skip_failed_events#4483
jeremydmiller merged 1 commit into
masterfrom
fix/305-unskip-rebuild-skip-failed-events

Conversation

@jeremydmiller
Copy link
Copy Markdown
Member

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 ApplyEventException wrapping was in place inside JasperFxAggregationProjectionBase._buildAction, but the SG-emitted DetermineActionAsync overrides on individual projections weren't covered. So when a poison-pill event threw, the raw InvalidOperationException still propagated up through the AggregateException AggregationRunner.BuildBatchAsync throws, and GroupedProjectionExecution.buildBatchWithSkipping's OfType<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's DetermineActionAsync emission and restores the seam end-to-end.

Pin bumps

Package Old New
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

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

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>
@jeremydmiller jeremydmiller merged commit 919ece4 into master May 19, 2026
6 checks passed
@jeremydmiller jeremydmiller deleted the fix/305-unskip-rebuild-skip-failed-events branch May 19, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant