- Major improvements
- Reduced reliance on cluster membership table and speed up clustering convergence by sending versioned snapshots of the table as part of gossip messages
- Configurable transactional state roles to support cases when a transactional state cannot be transaction manager
Important: An incompatibility was reported of 2.4.0 with clustering providers, such as MongoDB and DynamoDB, that do not implement correctly or at all membership table version. This issue has been addressed via #5863 in v2.4.1.
This release is backward compatible with 2.0.* releases, which allows for in-place upgrade of a running cluster.
-
Non-breaking improvements
- Improve serializer performance hygiene (#5409)
- Add UseLinuxEnvironmentStatistics method for ISiloBuilder (#5498)
- Improve activation & directory convergence (#5424)
- Updated stream subscription handle extension functions to handle batch consumption, comparable to what is supported for subscribe. (#5502)
- Add square bracket guards (#5521)
- Added batch stream production back in. (#5503)
- Allow default(ImmutableArray) to be serialized (#5587)
- Improve Roslyn TypeCode generation (#5604)
- Remove lock from CallbackData (#5595)
- Execute tasks scheduled against defunct activations (#5588)
- Make transaction log group max size configurable (#5656)
- Reduce delay local directory when cluster membership is not stable (#5677)
- Add Incoming grain call filter extensions for ISiloBuilder (#5466)
- ClusterClient: only call IRuntimeClient.Reset for OutsideRuntimeClient (#5694)
- CodeGenerator: skip empty projects (#5689)
- Add UseAzureTableReminderService OptionsBuilder overload (#5703)
- Dispose TestCluster after tests (#5715)
- Add validator for DevelopmentClusterMembershipOptions (#5721)
- Fix CategoryDiscoverer first-chance exception while debugging (#5710)
- Configure application parts in UseTransactions (#5741)
- Added better type handling to DynamoDB deserialization (#5764)
- Add UsePerfCounterEnvironmentStatistics overload for ISiloBuilder (#5784)
- Improve codegen's .NET Core 3 compatibility (#5799)
- Support configurable supported roles in transactional state. (#5802)
- Cleanup transaction confirmation worker logging. (#5815)
- Update xUnit & fix minor test project issues (#5598)
- Avoid wrapping exceptions thrown during lifecycle (#5665)
- Expose versioning from membership (#5695)
- Improve lifecycle logging (#5711)
- Improvements for cluster membership (#5747)
- Send a snapshot of the membership table on gossip (#5796)
- Always log stack trace when a Task is enqueued for an invalid activation (#5833)
- Add core tracing events (#5691)
-
Non-breaking bug fixes
- Use local silo as default primary silo (#5522)
- On the client, close gateway connection to dead silos (#5561)
- Prevent NullReferenceException with some storage providers when state is Nullable (#5570)
- Accommodate existing RequestContext.PropagateActivityId value in ClusterClient (#5575)
- Fix #5565 - NullReferenceException in ConvertAsync helper (#5582)
- Fix NullReferenceException in TestCluster.cs (#5592)
- NoOp delete when ETag is null in AzureTableStorage provider (#5577)
- Fix potential NullReferenceException in PersistentStreamProvider (#5597)
- Fix breakage in Microsoft.Extensions.Hosting (#5610)
- Fix ReadLineStartingWithAsync for LinuxEnvironmentStatistics (#5608)
- Add null check in MessageCenter.TryDeliverToProxy (#5641)
- Improve cleanup of activations on dead silos (#5646)
- Fix Nullable (#5663)
- Fixes #5661 by allowing configuration to pass in value of MetadataPro… (#5662)
- Fix #5473 - codegen fails on recursively defined types (#5688)
- Fix the test trace file name on Unix systems (#5708)
- Fixed DynamoDB reminder issue (#5739)
- Fix incorrectly configured listening ports in tests (#5751)
- Fix concurrency bug in TestCluster (#5754)
- Replace Environment.FailFast with Environment.Exit (#5759)
- Fix OnCompleteAsync & OnErrorAsync in StreamImpl. (#5769)
- Fix exception in LatestVersionSelector when there are no deployed versions of a grain. (#5720)
- Fix build on VS 2019 16.2.0 (#5791)
- Fixed bug in SMS streams where events were not being delivered to batch observers. (#5801)
- Fixed bug preventing OnError from being called on batch consumers. (#5812)
- Terminate ConfirmationWorker loop on deactivation (#5821)
- Stop background transaction processing when a grain deactivates (#5832)
- Reject failed activations and fix possible race condition (#5825)