Skip to content

Fix EventPage.CalculateCeiling crash on fully-skipped batch (marten#4663) [1.0]#417

Merged
jeremydmiller merged 2 commits into
1.0from
fix-4663-eventpage-empty-ceiling-1.0
Jun 5, 2026
Merged

Fix EventPage.CalculateCeiling crash on fully-skipped batch (marten#4663) [1.0]#417
jeremydmiller merged 2 commits into
1.0from
fix-4663-eventpage-empty-ceiling-1.0

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Backport of #416 to the 1.0 branch.

Problem

EventPage.CalculateCeiling calls this.Last().Sequence whenever (Count + skippedEvents) == batchSize. When error handling is configured to skip events (serialization/application/unknown event errors) and every event in a full batch is skipped, the page is empty (Count == 0) while Count + skippedEvents == batchSize. Last() then throws System.InvalidOperationException: Sequence contains no elements, crashing projection rebuilds.

Reported in JasperFx/marten#4663 (Marten v8.37.2, small batch sizes, event skipping, optimized rebuilds, HotCold daemon).

Fix

Guard the Last() access with && Count > 0. When the page is entirely skipped events, fall back to the high water mark so the daemon keeps making progress instead of throwing.

Commits

  1. The fix + EventPageTests regression coverage (passes on net8.0/9.0/10.0).
  2. Bump JasperFx.Events package version 1.36.01.36.1.

Fixes JasperFx/marten#4663

🤖 Generated with Claude Code

jeremydmiller and others added 2 commits June 5, 2026 13:15
…page

When error handling is configured to skip events and every event in a full
batch is skipped, the EventPage is empty (Count == 0) while
Count + skippedEvents == batchSize. CalculateCeiling then called Last() on the
empty page and threw "Sequence contains no elements", crashing projection
rebuilds. Guard the Last() access with Count > 0 and fall back to the high
water mark so the daemon keeps making progress.

Fixes JasperFx/marten#4663

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jeremydmiller jeremydmiller merged commit 853b85e into 1.0 Jun 5, 2026
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