Skip to content

Bump Microsoft.Orleans.EventSourcing from 10.1.0 to 10.4.0 - #258

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/src/Microsoft.Orleans.EventSourcing-10.4.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/src/Microsoft.Orleans.EventSourcing-10.4.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 15, 2026

Copy link
Copy Markdown
Contributor

Updated Microsoft.Orleans.EventSourcing from 10.1.0 to 10.4.0.

Release notes

Sourced from Microsoft.Orleans.EventSourcing's releases.

10.4.0

This release strengthens cluster membership consistency, extends cooperative cancellation across framework APIs, and gives streaming applications more control over subscription start positions and dequeue sizes. This release also fixes SQLite persistence under contention, modernizes request-latency metrics, improves serialization and source-generation efficiency, and expands the preview journaling and Durable Jobs capabilities.

Compatibility and upgrade notes

[!IMPORTANT]
Review the SQLite query updates and metric schema changes when upgrading.

  • Refresh existing SQLite persistence queries (#​11354). SQLite writes now use a single implicit transaction, preserving atomicity and durable clears when pooled connections encounter writer contention. Reapply the 10.4.0 SQLite main script and SQLite persistence script to existing databases to install the corrected queries. Both scripts are idempotent and preserve grain state.
  • Update request-latency dashboards and exporter configuration (#​11251). Application request latency is now a standard Histogram<double> named orleans-app-requests-latency, measured in fractional milliseconds. It replaces the separate orleans-app-requests-latency-bucket, -count, and -sum instruments and their duration attribute. Configure histogram boundaries through an OpenTelemetry View and update dashboards, alerts, and recording rules for the exporter representation. Use matching boundaries across instances whose distributions are aggregated.
  • Use canonical grain-type metric dimensions (#​11253). orleans-grains now uses grain_type, containing the canonical GrainId.Type identity, in place of type, which contained the CLR implementation name. Activation lifecycle metrics also gain this dimension. Update queries and label filters accordingly.
  • Review explicitly numbered RPC parameters (#​11179). RPC parameter [Id] attributes now control serialized argument IDs, and automatic IDs count serialized parameters. Place CancellationToken last. Existing contracts with parameter [Id] attributes or non-last cancellation tokens can change argument wire IDs relative to 10.3.1; coordinate their client/silo contract upgrade or introduce versioned contracts. Method-level [Id] attributes and ordinary unannotated, token-last contracts retain their existing identities and argument numbering.
  • Review preview journaling API changes (#​11211, #​11276, #​11319). Journaling and Durable Jobs packages continue as 10.4.0-alpha.1. Custom integrations should adopt the updated durable-state/state-machine contracts and streamed catalog enumeration APIs. Named-provider migration is an opt-in capability for moving Durable Jobs between storage backends; existing default-provider convenience registrations remain available.

Highlights

Runtime, clustering, and reminders

  • Consistent membership across providers. Core membership and the Azure Storage, Cosmos DB, DynamoDB, Consul, Redis, Cassandra, Firestore, ADO.NET, and ZooKeeper implementations strengthen atomic updates, canonical snapshots, and heartbeat handling. ZooKeeper preserves consistent snapshot reads under contention, and Firestore preserves atomic membership reads (#​11307, #​11309, #​11317, #​11342, #​11387).
  • Cancellation-aware framework contracts. Trailing cancellation tokens flow through runtime, reminder, streaming, transaction, management, and other framework operations. Legacy overloads and stable wire aliases preserve existing implementations and established framework call identities (#​10937).
  • More efficient manifest retrieval. Content-addressed retrieval is enabled by default, allowing silos to reuse immutable manifests by canonical SHA-256 hash and repair missing metadata from peers. ClusterManifestOptions.EnableContentAddressedRetrieval selects the retrieval mode (#​11239).
  • Stronger lifecycle handling. Shutdown drains admitted connection-establishment and client-observer work; reminder startup and topology reconciliation are better ordered; directory recovery deactivates duplicate activations; and idle migrated activations are collected (#​11263, #​11264, #​11118, #​11030, #​11365).

Streaming

  • Choose where subscriptions begin. StreamSubscriptionStartPosition.Latest and EarliestAvailable provide per-subscription control, with a provider default through StreamPullingAgentOptions.InitialSubscriptionStartPosition. EarliestAvailable starts at the oldest retained message for the stream in the local queue cache. An explicit sequence token takes precedence, and Latest remains the default. Enable the new controls after pulling-agent silos have been upgraded (#​10936).
  • Better recovery and handoffs. Typed cache-cursor results, provider-encoded offsets, and a reusable checkpoint state machine improve provider recovery. SQS and Azure Queue handoffs release messages, recovery preserves prefetched batches and pooled-buffer ownership, and pulling agents drain detached work during shutdown (#​9714, #​11153, #​11154, #​11062, #​11144, #​11268).
  • Tune memory-stream dequeue sizes. Per-provider MemoryStreamCacheOptions.MaxAddCount controls the maximum number of queue records requested per dequeue, allowing applications to balance response size and queue-call overhead. The default remains 100 (#​11238).

Persistence and transactions

  • SQLite persistence returns scalar versions and recovers cleanly from writer contention. Relational providers also receive normalized integer reads, corrected PostgreSQL persistence scripts, and Oracle defunct-silo cleanup support (#​11322, #​11354, #​11283, #​11247, #​11246).
  • Transaction participant locks honor transaction timeouts, aborted queued lock operations are removed, and recovery cleanup tasks are awaited (#​10457, #​10455, #​11188).
  • DynamoDB providers honor configured endpoint credentials, bind token and profile options, and redact tokens in logs. Provider configuration validation and invariant text handling are strengthened across storage and clustering integrations (#​11292, #​11290, #​11288).

Preview journaling and Durable Jobs

  • S3 Express One Zone journal storage. Microsoft.Orleans.Journaling.S3 adds append-based write-ahead logs, conditional metadata/checkpoint publication, catalog discovery, and provider metrics. A conditional-rewrite mode supports S3-compatible development environments (#​10161).
  • Composable, named journal providers. Grains can compose durable state through the updated APIs, while named providers bind storage, catalogs, and state-manager factories together. Catalog enumeration streams results, and recovery serializes retries while preserving persistence failures (#​11279, #​11275, #​11211, #​11326).
  • Controlled Durable Jobs provider migration. Select an active provider for new shards and draining providers for existing jobs, inspect storage before retirement, and retain saved job handles across the cutover. Shard discovery uses start-time ordering, and shutdown drains scheduling and releases running shards. Queue wake-ups and flush signals are coalesced (#​11277, #​11258, #​11301, #​11103, #​11206).

Serialization, code generation, and deployment

  • Improved NativeAOT building blocks. Generated C# codecs and copiers use ref-returning UnsafeAccessor methods for private, readonly, and backing fields on supported targets. Grain activation constructors are preserved, non-generic grain references gain native construction, and serialization constructors can initialize existing objects under NativeAOT. Default serializer activation uses a shared construction path with consistent exception propagation (#​11372, #​11383, #​11371, #​11373, #​11390).
  • Opt-in serializer Hot Reload. Set <OrleansHotReload>true</OrleansHotReload> to generate stable member/dependency identities and lazily initialize dependencies added to existing serializers and copiers. Supported updates add strongly typed serialized members to classes and records; restart to refresh manifests when adding new polymorphic or collection-element types (#​10932).
  • Correct compound-aliased array resolution. Polymorphic arrays and arrays nested in closed generic types deserialize correctly, with the existing writer bytes preserved (#​11392).
  • Less repeated work and copying. The generator caches library types per compilation, serialization-attribute analysis skips generated code, contiguous JSON payloads are read directly, and buffered tail reads avoid repeated page traversal. Metadata discovery also supports single-file deployment (#​11363, #​11384, #​11270, #​11209, #​11054).

Observability and developer tooling

  • Request latency uses native histogram aggregation, while canonical, cached grain-type dimensions make activation populations and lifecycle events easier to correlate (#​11251, #​11253).
    ... (truncated)

10.3.1

The most significant change in this release over 10.3.0 is the format used by the version contract compatibility analyzers. The other changes are test and docs fixes.

What's Changed

Full Changelog: dotnet/orleans@v10.3.0...v10.3.1

10.3.0

Orleans 10.3.0

Orleans 10.3.0 expands the platform across clustering, streaming, persistence, integrations, serialization, and developer tooling while delivering a broad reliability and performance pass. Major outcomes include stronger distributed-directory and membership behavior, new streaming and storage providers, hardened transactions and durable jobs, incremental source generation, safer JSON storage deserialization, and new application templates. Alongside these features and fixes, the release optimizes key runtime paths, comprehensively refreshes the docs, strengthens testing and CI, and updates dependencies and repository maintenance.

Compatibility notes

[!IMPORTANT]
Review these changes before upgrading. This release contains three intentionally behavior-changing updates.

  • Default JSON storage serializer type allow-list (#​10268). The default Newtonsoft.Json-based Orleans storage serializer now resolves $type metadata only for types permitted by Orleans' configured type filters and manifest. Existing wire data remains readable when its types are allowed; [GenerateSerializer] types and standard permitted BCL types continue to work without changes. If persisted, streamed, or transactional JSON contains other types, reads now fail with an actionable JsonSerializationException. Prefer registering those types through TypeManifestOptions.AllowedTypes, [GenerateSerializer], ITypeNameFilter, or ITypeFilter; OrleansJsonSerializerOptions.AllowAllTypes = true restores the former permissive JSON behavior when a narrowly scoped allow-list is not practical.
  • Updated RPC semantic convention keys (#​10354). Orleans activities now emit the current OpenTelemetry RPC key rpc.system.name; Orleans-specific service, target, and source metadata move to orleans.rpc.service, orleans.rpc.target_id, and orleans.rpc.source_id. The runtime-side rpc.method value is now qualified as <interface>/<method>, and affected ActivitySource versions are incremented. Update dashboards, alerts, collectors, and queries which depend on the legacy rpc.system, rpc.service, rpc.orleans.target_id, or rpc.orleans.source_id keys or the previous method value.
  • Grain context configured before construction (#​10565). Orleans now deterministically applies IConfigureGrainContext actions before grain construction, so constructors can observe fully configured context state. Custom IGrainContextActivator implementations must migrate from CreateContext(GrainAddress) to CreateContext(GrainAddress, IConfigureGrainContext[]) and apply the supplied configurators before constructing the grain. Stateless-worker configurators continue to apply to the outer stateless-worker context.

Highlights

Runtime, clustering & resilience

Streaming

Storage, persistence, journaling, durable jobs & transactions

Providers & integrations

Serialization, code generation & analyzers

  • The source generator is now incremental, generates provider metadata at build time, avoids runtime provider scanning, and supports record-parameter field IDs and custom grain-call return types (#​10035, #​10493, #​10566, #​10495, #​10682).
  • Serialization reduces codec and buffer allocations, adds type/assembly allow-list helpers, and clarifies type-trust configuration (#​10301, #​10340, #​10668, #​10228, #​10424).
  • Analyzers detect RPC contract changes and provide improved diagnostic guidance (#​10337, #​10832).

Developer experience, templates, samples & docs

10.3.0-rc.1

What's Changed

10.2.2

What's Changed

New Contributors

10.2.2-rc.2

What's Changed

Full Changelog: dotnet/orleans@v10.2.2-rc.1...v10.2.2-rc.2

10.2.2-rc.1

What's Changed

New Contributors

Full Changelog: dotnet/orleans@v10.2.0...v10.2.2-rc.1

10.2.1

Reverts the message destination receiver cache changes from dotnet/orleans#10064 (commit: dotnet/orleans@d3c2af3)

Full Changelog: dotnet/orleans@v10.2.0...v10.2.1

10.2.0

Orleans v10.2.0 focuses on runtime reliability, grain directory correctness, observability, Durable Jobs and journaling improvements, provider fixes, and a broad test/CI stabilization push.

Highlights

Breaking changes and notable behavior changes

  • Redis multiplexer ownership: Redis providers using a DI-provided IConnectionMultiplexer via ServiceKey no longer dispose that shared multiplexer on shutdown. Providers which create their own multiplexer still own and dispose it. (#​10146, #​10182)
  • Metrics meter access: the static Orleans meter was removed. Code which referenced Orleans.Runtime.Instruments.Meter should resolve OrleansInstruments from DI and use its Meter instead. (#​10201)
  • Journaling default format: JSON Lines is now the default Orleans.Journaling storage format. Existing journals with stored format metadata continue to be read correctly; legacy entries without metadata are treated as OrleansBinary and migrate on snapshot write. Set JournaledStateManagerOptions.JournalFormatKey = "orleans-binary" to retain the old format for new writes. (#​9973)
  • Silo startup lifecycle: a new ValidateInitialConnectivity stage runs before BecomeActive, keeping silos in Joining until initial peer connectivity is validated. (#​10153)
  • Reminder lifecycle: reminder delivery is gated on the silo becoming active, while reminder register/update/unregister operations remain available later into shutdown. (#​10154, #​10155)
  • Client connection retries: the default client retry filter now retries additional transient gateway/startup failures, including OrleansMessageRejectionException and ConnectionFailedException, with a longer default retry window. (#​10140)
  • Directory activation-failure retries: retry loops after directory activation failures are now bounded by the normal message forward-count budget. (#​10094)
  • Diagnostics listener name: GrainLifecycleEvents.ListenerName is now correctly "Orleans.GrainLifecycle"; code subscribing by the previous string literal should update. (#​10121)
  • Durable Jobs storage providers: custom Durable Jobs journaling providers need catalog support via IJournalStorageCatalog. (#​10112, #​10148)
  • NATS options validation: invalid StorageType enum values are rejected at startup. (#​10176)

Runtime, activation, placement, and lifecycle

  • Fixed a stateless-worker reactivation race and a crash when cancelling indefinite keep-alive tickets. (#​10016, #​10014)
  • Fixed stuck deactivation recovery by removing stranded activations from the catalog, unregistering directory entries, and avoiding stale forwarding loops. (#​10046)
  • Fixed shutdown activations leaving stale grain directory entries. (#​10206)
  • Made the activation collector safer under memory pressure and when there are no valid candidates. (#​10113)
  • Stopped and awaited PlacementService workers during silo shutdown. (#​9993)
  • Prevented persistent stream pulling agents from accepting work or processing queue reads after shutdown starts. (#​10036)
  • Stabilized late lifecycle registration scheduling to avoid lock/scheduler races. (#​10135)
  • Added explicit initial connectivity validation before a silo becomes active. (#​10153)
  • Avoided tracking deactivated grains in activation repartitioner state and fixed repartitioning waits for inactive migrations. (#​10061, #​10130)
  • Reduced runtime hot-path overhead by avoiding per-activation scheduler logger fields, reducing request monitoring memory use, avoiding context capture in outgoing calls, optimizing response completion sources, simplifying InsideRuntimeClient response handling, and removing locks from activation response processing. (#​10118, #​10119, #​10129, #​10127, #​10128, #​10139, #​10141)
  • Broadened the default client connection retry filter to cover more transient startup and gateway failures. (#​10140)

Grain directory, routing, and cache correctness

  • Added TTL cleanup to the grain directory cache and diagnostic hooks for cache state changes. (#​10055)
  • Added a fast-path message destination cache for grain calls, with invalidation on activation, connection, gateway, and client state changes. (#​10064)
  • Capped cache invalidation header growth during message send and deserialization. (#​10078, #​10105)
  • Set target silo metadata correctly on cached silo connections. (#​10080)
  • Capped distributed directory ownership transfer batch sizes and split large transfer payloads into multiple messages. (#​10047, #​10053)
  • Fixed distributed directory recovery handoff for grains activating during ownership transfer. (#​10082)
  • Added distributed remote grain directory compatibility for rolling upgrades and a regression test for directory migration joins. (#​10050, #​10049)
  • Fixed LocalGrainDirectory membership reconciliation using snapshot-based processing, membership-version-aware stale cleanup, and membership refresh before directory RPC routing. (#​10086, #​10087, #​10088)
  • Simplified LocalGrainDirectory membership processing after the reconciliation changes. (#​10089)
  • Refined directory forwarding retry checks, removed a problematic directory failure forwarding optimization, and bounded retries after directory activation failures. (#​10092, #​10095, #​10094)
    ... (truncated)

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

---
updated-dependencies:
- dependency-name: Microsoft.Orleans.EventSourcing
  dependency-version: 10.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants