Download Latest Version v9.2.1 source code.tar.gz (2.7 MB)
Email in envelope

Get an email when there's a new version of Orleans

Home / v9.2.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-07-14 23.0 kB
v9.2.0 source code.tar.gz 2025-07-14 2.7 MB
v9.2.0 source code.zip 2025-07-14 4.4 MB
Totals: 3 Items   7.1 MB 0

Orleans v9.2.0 includes significant new features, performance improvements, and enhanced developer experience. This release introduces native .NET CancellationToken support, new storage providers, improved placement strategies, and numerous performance optimizations.

🚀 Major Features

CancellationToken Support (#9127)

Orleans now has full support for .NET's CancellationToken in grain methods, aligning with standard .NET async patterns and making it easier to handle cancellation scenarios in your grain operations.

Log-structured Grain Storage (#9450)

A new high-performance storage provider that uses a log-structured approach for improved write performance and reduced storage overhead.

ADO.NET Grain Directory (#9263)

Introduces a database-backed grain directory implementation, providing an alternative to in-memory directory storage with support for various relational databases. This enables persistent grain location information across cluster restarts and supports larger clusters with reduced memory overhead.

Memory-based Activation Shedding (#9532, [#9577])

Automatic grain deactivation under memory pressure helps prevent out-of-memory conditions by intelligently shedding grain activations when memory usage is high.

Silo Metadata and Placement Filtering (#9271, [#9368], [#9380], [#9482])

Enhanced placement control allowing you to filter silo selection based on custom metadata, enabling more sophisticated deployment scenarios.

🎯 Placement and Load Balancing

  • ResourceOptimizedPlacement as Default (#9533) - The default placement strategy is now ResourceOptimizedPlacement for better resource utilization
  • Fully Adaptive Stateless Worker (#9378) - Improved stateless grain scaling behavior
  • Rebalancer-compatible Tolerance Rule (#9464, [#9467]) - Better compatibility with grain rebalancing

📍 Grain Directory Improvements

ADO.NET Grain Directory

The new ADO.NET Grain Directory (#9263) provides: - Persistent grain location storage - Grain locations survive cluster restarts - Reduced memory footprint - Offload directory data to database - Support for multiple database providers - Works with SQL Server, MySQL, PostgreSQL, and other ADO.NET compatible databases - Scalability - Better support for very large clusters

Directory Caching Changes

  • Removed Adaptive Directory Caching (#9542) - The adaptive caching strategy has been obsoleted and removed. The standard caching mechanism provides better performance and consistency.

📊 Performance Improvements

  • Replaced LRU with LRU based on BitFaster.Caching (#9530) - More efficient caching implementation
  • Reduced log noise during debugging (#9397) - Cleaner debug experience
  • Optimized Azure Storage operations (#9373, [#9420]) - Fewer exceptions and unnecessary IO
  • Improved allocation patterns (#9570) - Better memory efficiency for cache invalidation
  • IAsyncEnumerable improvements (#9366, [#9387], [#9359]) - Fixed cancellation propagation and bounded operation times

🔧 Storage and Persistence

Azure Storage

  • DeleteStateOnClear option (#9393) - New option for Azure Table Storage provider
  • IConfiguration support for Azure Cosmos DB (#9204) - Easier configuration
  • IConfiguration support for Azure Redis Cache (#9395) - Simplified setup
  • Cosmos DB optimizations (#9435) - Avoid unnecessary reads in ClearStateAsync

Other Storage Improvements

  • Cassandra TTL behavior updates (#9371, [#9382]) - Better time-to-live handling
  • DynamoDB TTL error handling (#9500, [#9588]) - Reduced unnecessary error logging
  • Aligned grain storage provider behavior (#9417) - Consistent behavior across providers

🛡️ Reliability and Stability

  • Fixed AsyncEnumerable cancellation semantics (#9359, [#9424]) - Aligns with .NET expectations
  • Improved error handling in grain constructors (#9399) - Better diagnostics
  • Fixed memory leaks (#9548) - Resolved RuntimeMessagingTrace leaking
  • SystemTarget call cancellation (#9606) - Avoid attempting to cancel SystemTarget calls
  • Activation collection overflow fix (#9504) - Prevents datetime overflow issues

🔍 Observability and Diagnostics

  • Metric tags for storage instrumentation (#9595) - Better observability
  • Detailed grain statistics filtering (#9527) - Filter GetDetailedGrainStatistics by type
  • Extensive LoggerMessage adoption - Improved performance across all modules (#9352, [#9316], [#9423], [#9425], [#9431], [#9432], [#9434], [#9437], [#9440], [#9441], [#9451], [#9452], [#9455], [#9498], [#9540], [#9541], [#9544], [#9545], [#9563], [#9564], [#9565])

📝 Code Generation and Analyzers

  • ExcludeFromCodeCoverageAttribute support (#9415) - Generated code excluded from coverage
  • Extended ORLEANS0011 analyzer (#9447) - Check for reused type aliases
  • Improved error reporting (#9520) - Better errors when generating serializers from reference assemblies
  • ORLEANS0004 severity elevated to Error (#9576) - Stricter validation
  • F# serialization improvements (#9582) - Better support for discriminated unions

🔄 Breaking Changes and Important Updates

  1. Default Placement Strategy Changed - ResourceOptimizedPlacement is now the default instead of RandomPlacement
  2. Adaptive Directory Caching Obsoleted (#9542) - This strategy has been deprecated and removed
  3. Increased Default Warning Times (#9398) - RequestProcessingWarningTime and RequestQueueDelayWarningTime have higher defaults
  4. Orleans.Core.Abstractions Nullability (#9583) - Nullable reference types enabled
  5. Some Internal APIs Marked Internal (#9584) - AdoNetGrainDirectoryServiceCollectionExtensions and OrleansRelationalDownloadStream

🐛 Bug Fixes

  • Fixed generic base codec resolution (#9358)
  • Fixed NullReferenceException in PlacementWorker (#9386)
  • Fixed activation disposal issues (#9390)
  • Fixed flaky tests (#9396, [#9561])
  • Fixed BufferSliceReaderInput with offset issues (#9593, [#9598])
  • Fixed ObserverManager modification during enumeration (#8707)
  • Fixed interleaving behavior symmetry (#9536)

📦 Dependencies and Infrastructure

  • Removed unnecessary dependencies (#9476, [#9579]) - Microsoft.CSharp and System.Net.NameResolution
  • Updated Azure SDK packages (#9453)
  • Daily API reference file generation (#9422)
  • NuGet package READMEs added (#9513)
  • Updated xUnit version (#9466)

What's Changed

New Contributors

Full Changelog: https://github.com/dotnet/orleans/compare/v9.1.2...v9.2.0

Source: README.md, updated 2025-07-14