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
$typemetadata 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 actionableJsonSerializationException. Prefer registering those types throughTypeManifestOptions.AllowedTypes,[GenerateSerializer],ITypeNameFilter, orITypeFilter;OrleansJsonSerializerOptions.AllowAllTypes = truerestores 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 toorleans.rpc.service,orleans.rpc.target_id, andorleans.rpc.source_id. The runtime-siderpc.methodvalue is now qualified as<interface>/<method>, and affectedActivitySourceversions are incremented. Update dashboards, alerts, collectors, and queries which depend on the legacyrpc.system,rpc.service,rpc.orleans.target_id, orrpc.orleans.source_idkeys or the previous method value. - Grain context configured before construction (#10565). Orleans now deterministically applies
IConfigureGrainContextactions before grain construction, so constructors can observe fully configured context state. CustomIGrainContextActivatorimplementations must migrate fromCreateContext(GrainAddress)toCreateContext(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
- Distributed-directory rolling upgrades now have durable handoffs, cancellation-aware operations, stronger single-activation guarantees, and improved recovery and startup behavior (#10309, #10323, #10339, #9958, #10500, #10533, #10613, #10625).
- Membership fault detection gains connection liveness checks, adaptive probe timeouts, retained local health history, and local-stall detection (#9978, #10510, #10502, #9979).
- Reminder delivery, reconciliation, rebalancing, shutdown state, placement compatibility caching, and resilience policies received substantial correctness and efficiency improvements (#10296, #10430, #10612, #10819, #10838, #10311, #10313, #10614, #10573, #10596, #10314, #10597, #10599, #9819).
Streaming
- New AWS Kinesis support, SQS data adapters with FIFO support, Event Hubs Aspire integration, grain-backed checkpointing, and generalized Azure Table checkpointing broaden deployment choices (#8967, #8723, #9328, #10345, #10355).
- Persistent streams now flow cancellation; stateless workers can consume streams; Azure Queue migration supports compact JSON; and stream telemetry includes richer tags (#10383, #10657, #10507, #8631).
- Redis implicit subscriptions, SQL Server queue commits, ADO.NET handoffs, batched acknowledgements, implicit rewind handling, and memory/Event Hubs hot paths were hardened or optimized (#10423, #10572, #10536, #10574, #10655, #10662, #10550, #10767).
Storage, persistence, journaling, durable jobs & transactions
- New Azure Table and Redis journal providers, DynamoDB transactional storage, file-based grain storage, and a System.Text.Json grain storage serializer expand persistence options (#10254, #9823, #9616, #9537, #10806, #9505).
- Transactions receive extensive conflict, recovery, retry, isolation, cancellation, and diagnostics hardening across providers (#10372, #10376, #10382, #10375, #10374, #10385, #10545, #10743).
- Persistent state is now concurrency-safe and cancellation-aware, while journaling snapshot operations and durable-job retry/rescheduling semantics are more robust (#10255, #10641, #10800, #10681, #10349, #10547, #10716, #10679).
Providers & integrations
- Google Cloud Firestore providers, Cosmos DB custom document IDs and partition keys, ADO.NET
DbDataSourcesupport, and improved Azure, ZooKeeper, Redis, NATS, and relational-provider behavior extend and stabilize integrations (#8462, #8699, #10326, #10429, #10381, #10437, #10835, #10422, #10505, #10276). - SQL Server, PostgreSQL, and MySQL clustering add the missing defunct-silo cleanup query (#8811, #9125, #8896).
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
- New Orleans application templates and a basic clustering sample make it easier to start and validate applications (#10646, #10690, #10622).
- Connection middleware abstractions and framing helpers provide new transport extension points (#10136, #10433).
- The docs were comprehensively reorganized and modernized across onboarding, architecture, grains, hosting, operations, security, observability, persistence, streaming, testing, deployment, migration, and production guidance (#10331, #10332, #10334, #10335, #10327, #10328, #10333, #10330, #10336, #10329, #10675, #10746).
- Test infrastructure moved to xUnit v3 and Microsoft.Testing.Platform, with provider conformance kits, published test results, coverage reporting, and extensive reliability improvements (#10722, #10726, #10490, #10785, #10730, #10733, #10842, #10438, #10738).
Detailed changelog
Every change from the autogenerated changelog is listed once below.
Runtime, clustering, reminders & resilience (34)
Streaming (21)
Storage, persistence, journaling, durable jobs & transactions (26)
Providers & integrations (12)
Serialization, code generation & analyzers (15)
Developer experience, templates & samples (4)
Documentation (89)
Testing (117)
CI, build, dependencies & repository maintenance (34)
New Contributors
- @danielmeza made their first contribution in #10254
- @wenwangcode made their first contribution in #10136
- @tomaszstrejczek made their first contribution in #9125
- @juan-arias made their first contribution in #8896
- @jaironalves made their first contribution in #9823
- @vladrai made their first contribution in #10276
- @jsedlak made their first contribution in #9328
- @BernhardPollerspoeck made their first contribution in #9537
Full Changelog: v10.2.2...v10.3.0