Skip to content
Pre-release

@sergeybykov sergeybykov released this Aug 18, 2019 · 31 commits to master since this release

  • 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.

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)
  • 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 Microsoft.Extensions.Hosting (#5610)
    • Fix ReadLineStartingWithAsync for LinuxEnvironmentStatistics (#5608)
    • Add null check in MessageCenter.TryDeliverToProxy (#5641)
    • Fix Nullable (#5663)
    • Fix Transactions test (#5615)
    • Fix #5473 - codegen fails on recursively defined types (#5688)
    • ClusterClient: only call IRuntimeClient.Reset for OutsideRuntimeClient (#5694)
    • Fix the test trace file name on Unix systems (#5708)
    • Fixed 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 ValidateInitialConnectivity bug (#5766)
    • Fix #5686 - Json serialization with Postgres (#5763)
    • Fix exception in LatestVersionSelector when there are no deployed versions of a grain. (#5720)
    • Fix potential NullReferenceException in CallbackData (#5777)
    • Fix build on VS 2019 16.2.0 (#5791)
    • Fix connection preamble process (#5790)
    • Fixed bug in SMS streams where events were not being delivered to batch observers. (#5801)
    • Remove LocalSilo from MembershipTableSnapshot. Detect death in gossip (#5800)
    • Fixed bug preventing OnError from being called on batch consumers. (#5812)
    • Do not mark disconnected gateways as dead (#5817)
    • Terminate ConfirmationWorker loop on deactivation (#5821)
    • Call ProcessTableUpdate before GossipToOthers (#5842)
    • Added ClientMessagingOptions.LocalAddress to ignore ConfigUtilities.GetLocalIPAddress that automatic pickups network interfaces. (#5838)
    • Fixes packaging of analyzers (#5845)
    • Fix potential deadlock between Catalog and LocalGrainDirectory (#5844)
    • Log options on silo and client startup (#5859)
    • Handle the case where the clustering provider does not support TableVersion (#5863)
Assets 2
You can’t perform that action at this time.