- Major new features
- Revamped JournaledGrain for event sourcing with support for geo-distributed log-based consistency providers.
- Abstraction of Grain Services with fixed-placed per-silo application components with their workload partitioned via cluster consistency ring.
- Support for heterogeneous silos with non-uniform distribution of available grain classes.
- Cluster membership provider for Service Fabric.
- Improvements
- IL-based fallback serializer #2162
- IncomingMessageAcceptor sockets change from APM to EAP #2275
- Show clearer error when ADO.NET provider fails to init #2303, #2306
- In client, when a gateway connection close reroute not yet sent message to another gateway #2298
- MySQL Script: Minor syntax tweak to support previous server versions #2342
- Azure Queue provider message visibility config #2401
- Propagate exceptions during message body deserialization #2364
- Check IAddressable before DeepCopy #2383
- Modified stream types to not use fallback serializer and allow external #2330
- Add "Custom/" prefix for NewRelic metrics #2453
- Ignore named EventWaitHandle when not available in platform #2462
- Heterogenous silos support #2443
- Update to Consul 0.7.0.3 nuget package, because of breaking change in Consul API. #2498
- Grain Services by @jamescarter-le #2531
- Expose IMembershipOracle & related interfaces #2557
- Trigger registration of clients connected to the gateways in the directory when a silo is dead #2587
- Log Consistency Providers #1854
- In XML config, if SystemStoreType set to Custom but no ReminderTableAssembly are specified, assume that ReminderServiceProviderType is set to Disabled #2589
- In config XML, when SystemStoreType is set to MembershipTableGrain, set ReminderServiceType to ReminderTableGrain #2590
- Service Fabric cluster membership providers #2542
- Adds optional native JSON support to MySQL #2288
- Azure table storage throws InconsistentStateException #2630
- Allow serializers to have multiple [Serializer(...)] attributes #2611
- Removed GrainStateStorageBridge from GrainCreator to allow better control of the IStorage used when using non-silo unit tests. #2243
- Failsafe Exception serialization #2633
- Added a data adapter to azure queue stream provider #2658
- Client cluster disconnection #2628
- Performance
- Bug fixes
- Empty deployment Id in Azure #2230
- Remove zero length check in Protobuf serializer #2251
- Make PreferLocalPlacement activate in other silos when shutting down #2276
- Reset GrainClient.ClientInvokeCallback when uninitializing GrainClient #2299
- Fix ObjectDisposedException in networking layer #2302
- Reset client gateway reciever buffer on socket reset. #2316
- Removed calling Trace.Close() from TelemetryConsumer.Close() #2396
- Removes deadlocking and corrupted hashing in SQL storage provider #2395
- Fix #2358: Invoke interceptor broken for generic grains #2502
- Only a hard coded set of statistics were going to telemetry consumers. Now all non-string statistics are tracked. #2513
- Fix invocation interception for grain extensions #2514
- Fix type assertion in AdaptiveDirectoryCacheMaintainer #2525
- MembershipTableFactory should call InitializeMembershipTable on membership table. #2537
- CodeGen: fix check on parameters to generic types with serializers #2575
- EventHubQueueCache failing to write checkpoints on purge #2613
- Fix code copy-paste errors discovered by Coverity #2639
- GrainServices are now Started by the Silo on Startup #2642