Skip to content

Release 9.19.0 — adopt JasperFx 2.35.0, RaiseSideEffects slice-id docs, fix #5039 - #5040

Merged
jeremydmiller merged 4 commits into
masterfrom
release/9.19.0
Jul 24, 2026
Merged

Release 9.19.0 — adopt JasperFx 2.35.0, RaiseSideEffects slice-id docs, fix #5039#5040
jeremydmiller merged 4 commits into
masterfrom
release/9.19.0

Conversation

@jeremydmiller

@jeremydmiller jeremydmiller commented Jul 24, 2026

Copy link
Copy Markdown
Member

Stages the Marten 9.19.0 release for the coordinated Critter Stack drop.

What's in it

Adopt JasperFx / JasperFx.Events 2.35.0

Bumps the JasperFx family pins (JasperFx, JasperFx.Events, JasperFx.Events.SourceGenerator, JasperFx.SourceGenerator) 2.34.0 → 2.35.0. 2.35.0 adds the backwards-compatible aggregation-projection overload RaiseSideEffects(TOperations operations, TId id, IEventSlice<TDoc> slice) (#561). The self-pinned dogfood Marten version is intentionally left as-is.

Docs: RaiseSideEffects slice-id overload sample

New prose + compiled sample_raise_side_effects_with_slice_id snippet in docs/events/projections/side-effects.md, backed by raise_side_effects_with_slice_id (EventSourcingTests) which exercises the null-snapshot delete path end to end through the async daemon. The id parameter lets a MultiStreamProjection recover the slice identity to emit a follow-on event / publish a message even when slice.Snapshot == null (deleted aggregate).

Fix #5039UriFormatException for generic secondary-store markers

SecondaryStoreConfig.Build put the raw CLR type name into the marten:// subject URI. A closed generic marker (e.g. IMartenStoreMarker<MyContext>) has a backtick + arity in its name (IMartenStoreMarker\1), which is not a valid URI host → UriFormatException. Now sanitized (arity stripped, generic args folded in so distinct closed generics stay distinct). Regression test in Bug_5039_generic_secondary_store_marker`.

Version

Directory.Build.props9.19.0.

Verification

  • Full solution builds clean (net9.0 + net10.0, 0 errors).
  • side_effects_in_aggregations (7), composite/blue-green side-effect gates (3), Bug_5001_running_on_node_persisted (2), EventSourcingTests.Aggregation (159), Bug_5039_* (2), LINQ Operators (203) all green locally on 2.35.0.
  • markdownlint + cspell clean on the changed doc; mdsnippets in sync.

Issue board

🤖 Generated with Claude Code

Closes #5039.

jeremydmiller and others added 4 commits July 24, 2026 10:40
Bumps the JasperFx family pins (JasperFx, JasperFx.Events,
JasperFx.Events.SourceGenerator, JasperFx.SourceGenerator) from 2.34.0 to
2.35.0, which adds the backwards-compatible RaiseSideEffects(TOperations,
TId, IEventSlice<TDoc>) overload (#561).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Documents the new RaiseSideEffects(IDocumentOperations, TId, IEventSlice<TDoc>)
overload (JasperFx.Events 2.35.0 / #561) for recovering the slice
identity of a deleted MultiStreamProjection aggregate whose snapshot is null.

Adds a compiled sample_raise_side_effects_with_slice_id snippet backed by a
passing test that exercises the null-snapshot delete path end to end through
the async daemon.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A closed generic marker interface (e.g. IMartenStoreMarker<MyContext>) has a
CLR type name containing a backtick and arity (IMartenStoreMarker`1), which is
not a valid URI hostname, so SecondaryStoreConfig.Build threw
UriFormatException when composing the marten:// subject.

Strips the arity and folds the sanitized generic argument names into the host
segment so distinct closed generics still map to distinct, valid URIs. Adds a
regression test covering both the sanitizer and the full AddMartenStore path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jeremydmiller
jeremydmiller merged commit d75224f into master Jul 24, 2026
10 checks passed
@jeremydmiller
jeremydmiller deleted the release/9.19.0 branch July 24, 2026 16:19
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.

SecondaryStoreConfig.Build throws UriFormatException for generic marker interfaces (backtick in type name)

1 participant