Releases: dotnet/orleans
v3.1.0-rc1
Improvements and bug fixes since 3.0.2.
In this release we enabled multi-targeting, nestandard2.0
and netcoreapp3.1
, for Microsoft.Orleans.Core
, Microsoft.Orleans.OrleansRuntime
, and Microsoft.Orleans.Connections.Security
packages to leverage some performance features available in netcoreapp3.1
.
-
Non-breaking improvements
- Initial cross-platform build unification (#6183)
- Fix 'dotnet pack --no-build' (#6184)
- Migrate 'src' subdirectory to new code generator (#6188)
- Allow MayInterleaveAttribute on base grains. Fix for issue #6189 (#6192)
- Multi-target Orleans sln and tests (#6190)
- Serialization optimizations for .NET Core 3.1 (#6207)
- Shorten ConcurrentPing_SiloToSilo (#6211)
- Add OrleansDebuggerHelper.GetGrainInstance to aid in local debugging (#6221)
- Improve logging and tracing, part 1 (#6226)
- Mark IGatewayListProvider.IsUpdatable obsolete and avoid blocking refresh calls when possible (#6236)
- Expose IClusterMembershipService publicly (#6243)
- Minor perf tweak for RequestContext when removing last item (#6216)
- Change duplicate activation to a debug-level message (#6246)
- Add support Microsoft.Data.SqlClient provider, fix #6229 (#6238)
- TestCluster: support configurators for IHostBuilder & ISiloBuilder (#6250)
- Adds MySqlConnector library using invariant MySql.Data.MySqlConnector (#6251)
- Expose exception when initializing PerfCounterEnvironmentStatistics (#6260)
- Minor serialization perf improvements for .NET Core (#6212)
- Multi-target TLS connection middleware to netcoreapp3.1 and netstandard2.0 (#6154)
- Fix codegen incremental rebuild (#6258)
- CodeGen: combine cache file with args file and fix incremental rebuild (#6266)
- Avoid performing a lookup when getting WorkItemGroup for SchedulingContext (#6265)
- Membership: require a minimum grace period during ungraceful shutdown (#6267)
- Provide exception to FailFast in FatalErrorHandler (#6272)
- Added support for PAY_PER_REQUEST BillingMode (#6268)
- Use RegionEndpoint.GetBySystemName() to resolve AWS region (#6269)
- Support Grain Persistency TTL On dynamo DB (#6275, #6287)
- Replaced throwing Exception to Logger.LogWarning (#6286)
-
Non-breaking bug fixes
v2.4.5
Improvements and bug fixes since 2.4.4.
-
Non-breaking improvements
-
Non-breaking bug fixes
v3.0.2
v3.0.1
Improvements and bug fixes since 3.0.0.
-
Non-breaking improvements
-
Non-breaking bug fixes
- Consul: support extended membership protocol (#6095)
- Fix routing of gateway count changed events to registered servi… (#6102)
- Allow negative values in TypeCodeAttribute. Fixes #6114 (#6127)
- DynamoDB: support extended membership protocol (#6126)
- Redact logged connection string in ADO storage provider during init (#6139)
- Fixed CodeGenerator.MSBuild cannot ResolveAssembly in .NetCore 3.0 (#6143)
v2.4.4
Improvements and bug fixes since 2.4.3.
-
Non-breaking improvements
-
Non-breaking bug fixes
- Fix potential rare NullReferenceException in GrainTimer (#6043)
- Consul: support extended membership protocol (#6095)
- Fix routing of gateway count changed events to registered servi… (#6102)
- Allow negative values in TypeCodeAttribute. Fixes #6114 (#6127)
- DynamoDB: support extended membership protocol (#6126)
- Redact logged connection string in ADO storage provider during init (#6139)
v3.0.0
Major improvements since 2.0.0
- Distributed ACID transactions, across grains and data stores
- New, more efficient scheduler
- New Roslyn-based source-to-source code generator
- Improved cluster membership protocol for improved recovery speed
- Integration with .NET Generic Host
- New networking layer built on ASP.NET Bedrock
- Support for TLS
- Improved extensibility of the runtime
- Performance improvement between 30% and 140% depending on scenario
This release is backward compatible, over the wire messaging wise, with 2.* releases, which allows for in-place upgrade of a running cluster. However, there are several breaking changes in the APIs that might require minor adjustments for application code to compile.
Tested on .NET Framework 4.7.2, .NET Core 2.2 and .NET Core 3.0.
Changes since 2.3.0:
-
Non-breaking improvements
- Introduced general component configurator pattern. (#5437)
- Linux version of IHostEnvironmentStatistics (#5423)
- Grain extensions are now available on system targets and Grain services (#5445)
- Added IQueueData adapter for persistent streams. (#5450)
- Add Incoming grain call filter extensions for ISiloBuilder (#5466)
- 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, complerable to what is supported for subscribe. (#5502)
- Add square bracket guards (#5521)
- Enable TransactionalStateStorageTestRunner to test with custom type (#5514)
- Modified component configurator extension functions so order of configuration no longer matters. (#5458)
- Fix #5519: use local silo as default primary silo (#5522)
- Added batch stream production back in. (#5503)
- Cleanup pass of named service configurator (#5528, #5535)
- Dropped fluent support for Named Service Configurator (#5539)
- Accommodate existing RequestContext.PropagateActivityId value in ClusterClient (#5575)
- Fix packaging warning in Orleans.CodeGenerator.MSBuild (#5583)
- Provide separate options for worker & IO pool min thread counts (#5584)
- Implement IApplicationLifetime for ClientBuilder/SiloHostBuilder (#5586)
- Add Analyzers to Orleans (#5589)
- Improve Roslyn TypeCode generation (#5604)
- Update xUnit & fix minor test project issues (#5598)
- Remove lock from CallbackData (#5595)
- Execute tasks scheduled against defunct activations (#5588)
- Improve cleanup of activations on dead silos (#5646)
- Fixes #5661 by allowing configuration to pass in value of MetadataPro… (#5662)
- Make transaction log group max size configurable (#5656)
- Avoid wrapping exceptions thrown during lifecycle (#5665)
- Reduce default liveness probe timeout from 10 seconds to 5. (#5673)
- Reduce delay localdirectory when cluster membership is not stable (#5677)
- Create GrainReferenceKeyInfo (#5619)
- Add codegen error for non-awaitable grain interface methods (#5530)
- CodeGenerator: skip empty projects (#5689)
- Expose versioning from membership (#5695)
- Add UseAzureTableReminderService OptionsBuilder overload (#5703)
- Remove ExpectedClusterSize & add MaxOperationBackoffTime (#5702)
- Start MembershipTableCleanupAgent in Active instead of RuntimeGrainServices (#5722)
- Start ClusterHealthMonitor in Active instead of BecomeActive (#5723)
- Grain-based reminders: separate IReminderTable & IReminderTableGrain (#5714)
- Dispose TestCluster after tests (#5715)
- Check if debugger is attached before break (#5730)
- Add validator for DevelopmentClusterMembershipOptions (#5721)
- Improve lifecycle logging (#5711)
- Minor client/silo teardown tweaks (#5712)
- Use nameof instead of magic string (#5735)
- Configure application parts in UseTransactions (#5741)
- Add core tracing events (#5691)
- HostedClient - use a slim IClusterClient implementation (#5745)
- Improvements for cluster membership (#5747)
- Make PlacementStrategy marker classes public
- Changes to Orleans runtime to enable building Indexing as a NuGet package (#5674)
- Added better type handling to DynamoDB deserialization (#5764)
- Networking stack rewrite (#5436)
- Remove message resend support (#5770)
- Implement full-duplex silo-to-silo connections (#5776)
- Add UsePerfCounterEnvironmentStatistics overload for ISiloBuilder (#5784)
- Remove OrleansAzureUtils project and package (#5792)
- Send a snapshot of the membership table on gossip (#5796)
- Allow configuring outbound connection count & connection retry delay (#5798)
- Improve codegen's .NET Core 3 compatibility (#5799)
- Support configurable supported roles in transactional state. (#5802)
- Fix message header serialization to align with 2.x (#5803)
- Gossip status change on shutdown for SystemTargetBasedMembershipTable (#5804)
- Introduce support for network protocol versioning (#5807)
- Ignore superseded probe results (#5806)
- Log a warning when blocking application messages in MessageCenter (#5814)
- Wait before aborting connections to defunct silos (#5810)
- Check that a silo is not known to be dead before attempting a connection (#5811)
- Stop background transaction processing when a grain deactivates (#5832)
- Reject failed activations and fix possible race condition (#5825)
- Use simple await in Connection (#5831)
- Use simple await in HostedClient.RunClientMessagePump (#5830)
- Always log stack trace when a Task is enqueued for an invalid activation (#5833)
- GatewayManager: return all gateways if all are marked dead (#5813)
- Remove generics from grain directory caching (#5836)
- Refactor EventHubDataAdapter to be plugable (#5580)
- Change connection attempt failure timestamp (#5861)
- Remove unused "SetupSqlScriptFileNames" , It will cause the test to fail (#5872)
- Improve codegen's .NET Core 3 compatibility 2 (#5883)
- Improve graceful deactivation of grains performing transaction work (#5887)
- Add "UseSiloUnobservedExceptionsHandler" extensions to the ISiloBuilder (#5912)
- Add hard limits for message header and body size (#5911)
- Memory usage for activation data improved. (#5907)
- Stream configuration namespace cleanup. (#5923)
- Lease based queue balancer refactor. (#5914)
- Add detail to SiloHealthMonitor logs for superseded result (#5892)
- ClusterHealthMonitor: ignore superseded probes (#5930)
- Deny connections to known-dead silos (#5889)
- Set Socket.NoDelay = true by default (#5934)
- Adds a large sample that runs and tests locally in reliable configuration (#5909, #5953, #5951, #5955, #5984)
- Migrate to ASP.NET "Bedrock" abstractions (#5935)
- Remove AWS, Service Fabric, & ADO.NET metapackages (#5946)
- Improves queries by adding lock hinting to membership protocol (#5954)
- Bound connection attempt concurrency in ConnectionManager (#5894)
- Cleanup Response class & improve ToString (#5975)
- Fix connection log scoping (#5976)
- Make CollectionAgeLimitAttribute easy to use! (#5961)
- Remove unused IMembershipOracle interface (#5987)
- Move FileLoggerProvider from Core to TestingHost (#5992)
- Add additional internal health checks for membership (#5988)
- Add serializer for RegexStreamNamespacePredicate (#5989)
- Remove most instances of MarshalByRefObject (#5994)
- Make TestClusterBuilder.AddSiloBuilderConfigurator and TestClusterBuilder.AddClientBuilderConfigurator fluent style APIs. (#5995)
- Add IBinaryTokenStreamReader.Length property (#5997)
- Remove InternalsVisibleTo set for extensions by making necessary internal types public (#6000)
- Propagate message [de]serialization exceptions to callers (#5998)
- Improve MethodInfo resolution for grain call filters (#6004)
- Improve List/ReadOnlyCollection deep copy performance (#6010)
- Cancel pending silo monitoring probe after ProbeTimeout elapses (#6006)
- Simplify ConnectionListener.RunAsync (#6014)
- Support adding [DebuggerStepThrough] to generated classes via project option (#6017)
- Move from WindowsAzure.Storage library to Microsoft.AzureCosmos.Table and Microsoft.Azure.Storage.* packages. (#6013)
- Update dependecies to their latest versions (#6025, #5983, #5943, #5973, #5945, #5944)
- Default to cleaning up dead silo entries in the cluster membership table after 7 days. (#6032)
- Reduce log noise in SiloConnection (#6037)
- Add separate SiloMessagingOptions.SystemResponseTimeout option for SystemTarget calls (#6046)
- Added structured logging (#6045)
- Transactions: support larger state sizes in Azure Table Storage (#6047)
- Add warning message at startup (#6041)
- Add TLS middleware with sample (#6035)
- Prevent Orleans + Kestrel from interfering with each other's networking services (#6042)
- Remove SQL scripts from AdoNet NuGet packages. (#6049)
- Added consistent logging for all messages dropped due to expiry (#6053)
- Implement CleanupDefunctSiloEntries for Consul membership provider (#6056)
- Add remark about SQL scripts to client/silo builder documentation (#6062)
-
Non-breaking bug fixes
- Fix catch condition (#5455)
- Fix DI scope issue in azure blob (#5545)
- On the client, close gateway connection to dead silos (#5561)
- Prevent NullReferenceException with some storage providers when state is Nullable (#5570
- Fix #5565 - NullReferenceException in ConvertAsync helper (#5582)
- Allow default(ImmutableArray) to be serialized (#5587)
- 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 M...
v3.0.0-rc2
- Major improvements
- Added support for TLS
This release is backward compatible, over the wire messaging wise, with 2.* releases, which allows for in-place upgrade of a running cluster. However, there are several breaking changes in the APIs that might require minor adjustments for application code to compile.
Tested on .NET Framework 4.7.2, .NET Core 2.2 and .NET Core 3.0.
This release is ready for production use.
Changes since 3.0.0-rc1:
-
Non-breaking improvements
- Default to cleaning up dead silo entries in the cluster membership table after 7 days. (#6032)
- Reduce log noise in SiloConnection (#6037)
- Add separate SiloMessagingOptions.SystemResponseTimeout option for SystemTarget calls (#6046)
- Added structured logging (#6045)
- Transactions: support larger state sizes in Azure Table Storage (#6047)
- Add warning message at startup (#6041)
- Add TLS middleware with sample (#6035)
- Prevent Orleans + Kestrel from interfering with each other's networking services (#6042)
- Remove SQL scripts from AdoNet NuGet packages. (#6049)
-
Non-breaking bug fixes
v2.4.3
Improvements and bug fixes since 2.4.2.
-
Non-breaking improvements
- Add "UseSiloUnobservedExceptionsHandler" extensions to the ISiloBuilder (#5912)
-
Non-breaking bug fixes
- Remove activation from message target list if constructor threw an exception (#5958)
- Fix Connect blocked when ConnectAsync completed synchronously (#5963)
- Stateless worker local compatibility check (#5917)
- Fixed wrong condition for getting logContext (#5999)
- Fix UTF8 encoding settings that appear to break execution of tests. (#6001)
- Use MemFree when MemAvailable is not present (#6005)
- Specify DateTimeKind.Utc when constructing DateTime instances (#6020)
v1.5.10
v3.0.0-rc1
- Major improvements
- Replaced networking stack with the Bedrock layer of ASP.NET Core
- Support for future wire protocol versioning
- A series of improvements in cluster recovery from node failures
- Pluggable data adapters for EventHub stream provider
- Compatibility with .NET Core 3.0
This release is backward compatible, over the wire messaging wise, with 2.* releases, which allows for in-place upgrade of a running cluster. However, there are several breaking changes in the APIs that might require minor adjustments for application code to compile.
We measured significant performance gains with this release over 2.* versions, ranging from 8% to 93% depending on the test, mostly due to the network stack rewrite.
Tested on .NET Framework 4.7.2, .NET Core 2.2 and .NET Core 3.0.
This release is ready for production use.
Known issue.
If you get the following run time error on .NET Core 3.0
An exception of type 'System.IO.FileNotFoundException' occurred in Orleans.Runtime.dll but was not handled in user code: 'Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
add an explicit reference to Microsoft.Bcl.AsyncInterfaces NuGet package to your project. See #6028 for details.
Changes since 3.0.0-beta1:
-
Non-breaking improvements
- Remove unused "SetupSqlScriptFileNames" , It will cause the test to fail (#5872)
- Improve codegen's .NET Core 3 compatibility 2 (#5883)
- Improve graceful deactivation of grains performing transaction work (#5887)
- Add "UseSiloUnobservedExceptionsHandler" extensions to the ISiloBuilder (#5912)
- Add hard limits for message header and body size (#5911)
- Memory usage for activation data improved. (#5907)
- Stream configuration namespace cleanup. (#5923)
- Lease based queue balancer refactor. (#5914)
- Add detail to SiloHealthMonitor logs for superseded result (#5892)
- ClusterHealthMonitor: ignore superseded probes (#5930)
- Deny connections to known-dead silos (#5889)
- Set Socket.NoDelay = true by default (#5934)
- Adds a large sample that runs and tests locally in reliable configuration (#5909, #5953, #5951, #5955, #5984)
- Migrate to ASP.NET "Bedrock" abstractions (#5935)
- Remove AWS, Service Fabric, & ADO.NET metapackages (#5946)
- Improves queries by adding lock hinting to membership protocol (#5954)
- Bound connection attempt concurrency in ConnectionManager (#5894)
- Cleanup Response class & improve ToString (#5975)
- Fix connection log scoping (#5976)
- Make CollectionAgeLimitAttribute easy to use! (#5961)
- Remove unused IMembershipOracle interface (#5987)
- Move FileLoggerProvider from Core to TestingHost (#5992)
- Add additional internal health checks for membership (#5988)
- Add serializer for RegexStreamNamespacePredicate (#5989)
- Remove most instances of MarshalByRefObject (#5994)
- Make TestClusterBuilder.AddSiloBuilderConfigurator and TestClusterBuilder.AddClientBuilderConfigurator fluent style APIs. (#5995)
- Add IBinaryTokenStreamReader.Length property (#5997)
- Remove InternalsVisibleTo set for extensions by making necessary internal types public (#6000)
- Propagate message [de]serialization exceptions to callers (#5998)
- Improve MethodInfo resolution for grain call filters (#6004)
- Improve List/ReadOnlyCollection deep copy performance (#6010)
- Cancel pending silo monitoring probe after ProbeTimeout elapses (#6006)
- Simplify ConnectionListener.RunAsync (#6014)
- Support adding [DebuggerStepThrough] to generated classes via project option (#6017)
- Move from WindowsAzure.Storage library to Microsoft.AzureCosmos.Table and Microsoft.Azure.Storage.* packages. (#6013)
- Update dependecies to their latest versions (#6025, #5983, #5943, #5973, #5945, #5944)
-
Non-breaking bug fixes
- Protect ClientState.PendingToSend with lock (#5881)
- Fix NullReferenceException in AQStreamsBatchingTests.Dispose (#5888)
- Stateless worker local compatibility check (#5917)
- Remove activation from message target list if constructor threw an exception (#5958)
- Clear RequestContext when spawning connections (#5974)
- Fix potential deadlock with Connection.closeRegistration (#5986)
- Fixed wrong condition for getting logContext (#5999)
- Use MemFree when MemAvailable is not present (#6005)
- Avoid generating duplicate method id switch labels (#6007)
- CodeGen: disambiguate parameters with duplicate names (#6016)
- Specify DateTimeKind.Utc when constructing DateTime instances (#6020)
- Use half-duplex connections when accepting a connection from a pre-v3 silo (#6023)