Project: Azure Service Fabric (Orchestration & Management / Scheduling & Orchestration)
File: Service-Fabric-71-releasenotes.md

This release includes the bug fixes and features described in this document. This release includes runtime, SDKs and Windows Server Standalone deployments to run on-premises. The following packages and versions are part of this release: | Service | Platform | Version | ||-|| |Service Fabric Runtime| Ubuntu <br> Windows | 7.1.410.1 <br> 7.1.409.9590 | |Service Fabric for Windows Server|Service Fabric Standalone Installer Package | 7.1.409.9590 | |.NET SDK |Windows .NET SDK <br> Microsoft.ServiceFabric <br> Reliable Services and Reliable Actors <br> ASP.NET Core Service Fabric integration| 4.1.409 <br> 7.1.409 <br> 4.1.409 <br> 4.1.409 | |Java SDK |Java for Linux SDK | 1.0.6 | |Service Fabric PowerShell and CLI | AzureRM PowerShell Module <br> SFCTL | 0.3.15 <br> 8.0.0 | General Availability of - : Ephemeral OS disks are storage created on the local virtual machine, and not saved to remote Azure Storage. They are recommended for all Service Fabric node types (Primary and Secondary), because compared to traditional persistent OS disks, ephemeral OS disks: Reduce read/write latency to OS disk Enable faster reset/re-image node management operations Reduce overall costs (the disks are free and incur no additional storage cost) Support for declaration of . : Support for Liveness Probe mechanism for containerized applications. Liveness Probe help announce the liveness of the containerized application and when they do not respond in a timely fashion, it will result in a restart. for and applications. This allows executing Code Packages (e.g. containers), in a specified order, to perform Service Package initialization. FabricObserver and ClusterObserver are stateless applications that capture Service Fabric Telemetry related to different aspects of an SF cluster. Both these applications are ready for deployment to Windows production clusters to capture rich telemetry with implemented support for ApplicationInsights, EventSource and LogAnalytics. - runs on all nodes, generates health events, emits telmetry when user configured resource usage thresholds are reached. This release contains several enhancements across monitoring, data management, health event details,structured telemetry. - runs on one node, captures cluster level health telemetry. In this release, ClusterObserver also monitors node status and emits telemetry when node is down/disabling/disabled for longer than user-specified time period. : During planned service maintenance, such as service upgrades or node deactivation, you would like to allow the services to gracefully drain connections. This feature adds an instance close delay duration in the service configuration. During planned operations, SF will remove the Service's address from discovery and then wait this duration before shutting down the service. : Subclustering happens when services with different placement constraints have a common . If the load on the different sets of nodes differs significantly, the Service Fabric Cluster Resource Manager believes that the cluster is imbalanced, even when it has the best possible balance because of the placement constraints. As a result, it attempts to rebalance the cluster, potentially causing unnecessary service movements (since the "imbalance" cannot be substantially improved). Starting with this release, the Cluster Resource Manager will now attempt to automatically detect these sorts of configurations and understand when the imbalance can be fixed through movement, and when instead it should leave things alone since no substantial improvement can be made. : We have introduced new move cost value VeryHigh that provides additional flexibility in some scenarios to define if a separate move cost should be used for secondary replicas. Enabled mechanism for containerized

Liveness Probe help announce the liveness of the containerized application and when they do not respond in a timely fashion, it will result in a restart. - Service Fabric 7.1 uses custom transport to secure file transfer between nodes by default. The dependency on SMB file share is removed from the version 7.1. The secured SMB file shares are still existing on nodes that contains Image Store Service replica for customer's choice to opt out from default and for upgrade and downgrade to old version. : Volatile Reliable Collections allows data to be persisted to disk for durability against large-scale outages, can be used for workloads like replicated cache for example where occasional data loss can be tolerated.Based on the , we recommend this for workloads that don't need persistence, for services that handle the rare occasions of Quorum Loss. : To ease management of Reliable Collections backups for Service Fabric Stateful applications, Service Fabric Backup Explorer enables users to Audit and review the contents of the Reliable Collections, Update current state to a consistent view Create Backup of the current snapshot of the Reliable Collections Fix data corruption For customers using service fabric managed identities, please switch to new environment variables 'IDENTITY_ENDPOINT' and 'IDENTITY_HEADER'. The prior environment variables'MSIENDPOINT' and 'MSISECRET' are now removed. endpoint is now . There is additional guidance on how to validate the MITS server certificate in the docs. Currently Service Fabric ships the following nuget packages as a part of our ASP.Net Integration and support: Microsoft.ServiceFabric.AspNetCore.Abstractions Microsoft.ServiceFabric.AspNetCore.Configuration Microsoft.ServiceFabric.AspNetCore.Kestrel Microsoft.ServiceFabric.AspNetCore.HttpSys Microsoft.ServiceFabric.AspNetCore.WebListener These packages are built against AspNetCore 1.0.0 binaries which have gone out of support (https://dotnet.microsoft.com/platform/support/policy/dotnet-core). Starting in Service Fabric 8.x we will start building Service Fabric AspNetCore integration against AspNetCore 2.1 and for netstandard 2.0. As a result, there will be following changes: The following binaries and their nuget packages will be released for netstandard 2.0 only.These packages can be used in applications targeting .net framework <4.6.1 and .net core >=2.0 Microsoft.ServiceFabric.AspNetCore.Abstractions Microsoft.ServiceFabric.AspNetCore.Configuration Microsoft.ServiceFabric.AspNetCore.Kestrel Microsoft.ServiceFabric.AspNetCore.HttpSys The following package will no longer be shipped: Microsoft.ServiceFabric.AspNetCore.WebListener: Use Microsoft.ServiceFabric.AspNetCore.HttpSys instead. Service Fabric 7.2 and higher runtime drops support for .NET Core Service Fabric apps running with .NET Core 2.2 runtime. .NET Core runtime 2.2 is out of support from Dec 2019. Service Fabric runtime will not install .NET Core runtime 2.2 as part of its dependency. Customers should upgrade their .NET 2.2 runtime SF apps to the next .NET Core LTS version 3.1.<br> Guest executable and container applications created or upgraded in SF clusters with runtime versions 7.1+ are incompatible with prior SF runtime versions (e.g. SF 7.0).<br/> Following scenarios are impacted:<br/> An application with guest executables or containers is created or upgraded in an SF 7.1+ cluster.<br/> The cluster is then downgraded to a previous SF runtime version (e.g. SF 7.0).<br/> The application fails to activate.<br/> A cluster upgrade from pre-SF 7.1 version to SF 7.1+ version is in progress.<br/> In parallel with the SF runtime upgrade, an application with guest executables or containers is created or upgraded.<br/> The SF runtime upgrade starts rolling back (due to any reason) to the pre-SF 7.1 version.<br/> The application fails to activate.<br/> To avoid issues when upgrading from a pre-SF 7.1 runtime version to an SF 7.1+ runtime version, do not create or upgrade applications with guest executables or containers while the SF runtime upgrade is in

The simplest mitigation, when possible, is to delete and recreate the application in SF 7.0.<br/> The other option is to upgrade the application in SF 7.0 (for example, with a version only change).<br/> If the application is stuck in rollback, the rollback has to be first completed before the application can be upgraded again. | Versions | IssueType | Description | Resolution | |-|--|-|-| | Windows 7.1.409.9590 <br> Ubuntu 7.1.410.1 | Feature | VeryHigh service move cost | Brief desc We have introduced new move cost value VeryHigh that provides additional flexibility in some usage scenarios. For more details please consult the documentation.Introduces support for new PlacementAndLoadBalancing custom configuration option to define if a separate move cost should be used for secondary replicas. | Windows 7.1.409.9590 | Bug | Account created alerts | Brief desc In certain SF cluster configurations, the runtime would create user accounts with random names that would raise security alerts. These accounts now have standardized names with "WF-" prefix which can be used to identify them as Service Fabric accounts. This should stop automated alerts from being raised on these accounts. | Windows 7.1.409.9590 <br> Ubuntu 7.1.410.1 | Bug | Subclustered balancing | Brief desc Improved balancing for subclustered metrics which previously caused suboptimal balancing in some situations. For more information, see . | Windows 7.1.409.9590 | Feature | SSL certs declared by CN | Brief desc Application endpoint certificates can be declared by subject common name to enable auto-rollover. For more details please refer to . | Ubuntu 7.1.410.1 | Feature | Custom cipher list | Brief desc Config setting TLS12CipherList can now be used to configure a custom cipher list on Linux. See for details. | Windows 7.1.409.9590 <br> Ubuntu 7.1.410.1 | Feature | | Brief Desc: Ephemeral OS disks are storage created on the local virtual machine, and not saved to remote Azure Storage. They are recommended for all Service Fabric node types (Primary and Secondary). |Windows 7.1.409.9590 <br> Ubuntu 7.1.410.1 | Feature | | Brief Desc: During planned service maintenance, such as service upgrades or node deactivation, you would like to allow the services to gracefully drain connections. This feature adds an instance close delay duration in the service configuration. During planned operations, SF will remove the Service's address from discovery and then wait this duration before shutting down the service. | Versions | IssueType | Description | Resolution | |-|-|-|-| | Windows 7.1.409.9590* <br> Ubuntu 7.1.410.1 | Bug | Add aligned affinity support to Move primary replica API | Brief desc: Service Fabric supports service affinity and also provides management and troubleshooting APIs such as the ability to manually from one node to another. However, operations to move a primary that was a part of an aligned affinity relationship would only move the specific targeted primary, temporarially breaking the affinity relationship. In order to help ensure high availability, in Service Fabric v7.1 we improve the MovePrimary API to take aligned affinity into consideration. With this change, if the primary to be moved is a part of an aligned affinity relationship, then all the replicas in that relationship will be moved together. With this change, the API can now return a new exception in the case that the primary replicas of such services are only partially able to move within specified timeout: FabricErrorCode.AsyncOperationNotComplete. This means that the services will temporarily be in a torn aligned affinity

If this happens customer is advised to issue the operation again.<br> Impact: Service unavailability<br> Workaround: Manually move all individual primary replicas in aligned affinity correlation<br> How/When to Consume it: Issue Move primary replica operation for primary replica in aligned affinity correlation. | Windows 7.1.409.9590 | Bug | Backup policy operation works in wrong way when '/' is there in entity name | Brief desc: Few of backup policy operations used to work improperly when there is '/' in the application name. <br> Impact: Operations like enable backup, suspend backup and retention management were impacted because of this and all the operations are fixed with this release.<br> Workaround: N/A. <br> How/When to Consume it: Upgrade the service fabric cluster to 7.1. This fix should only be consumed when user has '/' in application name or service name and also using Backup Restore service to configure backup policy for that application. | Windows 7.1.409.9590 | Bug |Backup restore operations failed to work on FIPS compliant system.|Brief desc: Backup restore service was using non-FIPS compliant APIs in backup workflow and due to this few operations used to fail on FIPS compliant system. <br> Impact: This impacted complete backup flow when azure blob was used as storage and it is fixed with this release. <br> Workaround: N/A. <br> How/When to Consume it: Upgrade the service fabric cluster to 7.1. This fix should only be consumed when Backup restore service is being used in FIPS compliant system. | Windows 7.1.409.9590 | Bug |Fix trace upload on FIPS enabled machines|Brief desc: DCA does not upload to azure storage on FIPS enabled machines. The fix changes the default MD5 algorithm used by the storage api so that it is compliant. <br> Impact: Causes trace upload to fail. | IssueType | Description | Resolution | |-|-|-| | Bug |Java - Class loading issues in JNI when using Custom Class Loader| Symptom: JNI code intermittently asserts with NoClassDefFoundError in spring boot applications. <br> Rootcause: Spring boot uses LaunchedURLClassLoader which loads classes defined in jars in BOOT-INF/lib folder inside spring boot fat jar. In the case of reliable collections, if the operation completes synchronously then Runtime posts the result on the same thread which made the native call. If the operation completes asynchronously then Runtime calls into java on a new thread which doesnt know about the Custom Class loader. AppClassLoader can only load defined in the java class path. As the jars are present only in BOOT-INF/lib folder, AppClassLoader fails to load them.Added support for frameworks like SpringBoot which uses Custom Class loaders. <br> Fix: Save Custom Class loader and use it if the default class loader fails to find a class. <br> Workaround:Define Class Path in manifest and place one copy of SF jars outside fat jar. <br> Impact: SpringBoot applications using ReliableCollections intermittently crashes causing the service to restart. | Bug |Java - weak reference JNI crash| Symptom: JNI code intermittently asserts with ReliableCollections native calls. <br> RootCause: If a reliable collections call fails to complete synchronously, then a callback is registered by saving the context of the operation. When the TStore call completes asynchronously, this callback is invoked using the saved context.As this context is saved using weakreferences, Garbage collector could collect these objects during GC

When a callback is invoked using such freed context, JNI code would assert because of invalid access to memory location. <br> Workaround: N/A <br> Fix: Use strong references to save context. <br> Impact:Applications using ReliableCollections intermittently crashes because of the garbage collected weak references. | Bug |Java - Handle RSP->GetEndpoint failures| Symptom: When the replica primary replica reconfiguration, Java code throws NullPointerException. <br> Rootcause: When primary replica closes, Native returns 0x80071be8L. In such a case, JNI code returns NULL to Java which is causing NullPointerException.<br> Resolving endpoint of the stateful service whose primary is in reconfiguring state causes NullPointerException.Fixed code to return right exception to the caller in such state. <br> Workaround: Handle exception and re-resolve the endpoint. <br> Fix: Throw exception from GetEndpoint() for Failed(HResult) during reconfiguration. | IssueType | Description | Resolution | |-|-|-| | Feature | | Brief Desc: Data can be persisted to disk for durability against large-scale outages. Some Reliable Collections also support a volatile mode (with exceptions) where all data is kept in-memory, such as a replicated in-memory cache. Useful for workloads that don't need persistence and can handle rare occurrences of data loss. An example would be a service that acts as a replicated cache.Because there is no persistence, Quorum Loss will mean full data loss. We recommend this setting for services that can handle the rare occasions of Quorum Loss.There is no upgrade path for existing services. You will need to delete the existing service and recreate it with the flag changed. This is also true if you would like to make a volatile service persisted by changing the flag back to "true". | Feature | | Brief Desc: To ease management of Reliable Collections backup for Service Fabric Stateful applications, we are announcing public preview of Service Fabric Backup Explorer. It is a utility that enables users to i)Audit and review the contents of the Reliable Collections, ii) update current state to a consistent view, iii) create Backup of the current snapshot of the Reliable Collections and iv) Fix data corruption. The table below is an overview of the direct links to the packages associated with this release. Follow this guidance for setting up your developer environment: | Area | Package | Version | Repository | Direct Download Link | |-|-|-|-|-| |Service Fabric Runtime |Ubuntu Developer Set-up | 7.1.410.1 |N/A | Cluster Runtime: https://apt-mo.trafficmanager.net/repos/servicefabric/pool/main/s/servicefabric <br> Service Fabric SDK for local cluster setup: https://apt-mo.trafficmanager.net/repos/servicefabric/pool/main/s/servicefabricsdkcommon/ <br> Container image: https://hub.docker.com/r/microsoft/service-fabric-onebox/ || Windows Developer Set-up| 7.1.409.9590 | N/A | https://download.microsoft.com/download/c/8/c/c8c98ab2-6e7a-4d9a-a0a5-506b18111677/MicrosoftServiceFabric.7.1.409.9590.exe | |Service Fabric for Windows Server |Service Fabric Standalone Installer Package | 7.1.409.9590 |N/A | https://download.microsoft.com/download/8/3/6/836E3E99-A300-4714-8278-96BC3E8B5528/7.1.409.9590/Microsoft.Azure.ServiceFabric.WindowsServer.7.1.409.9590.zip | ||Service Fabric Standalone Runtime | 7.1.409.9590 |N/A | https://download.microsoft.com/download/B/0/B/B0BCCAC5-65AA-4BE3-AB13-D5FF5890F4B5/7.1.409.9590/MicrosoftAzureServiceFabric.7.1.409.9590.cab | |.NET SDK |Windows .NET SDK | 4.1.409 |N/A | https://download.microsoft.com/download/c/8/c/c8c98ab2-6e7a-4d9a-a0a5-506b18111677/MicrosoftServiceFabricSDK.4.1.409.msi | ||Microsoft.ServiceFabric | 7.1.409 |N/A |https://www.nuget.org | ||Reliable Services and Reliable Actors<br>\-Microsoft.ServiceFabric.Services<br>\-Microsoft.ServiceFabric.Services.Remoting<br>\-Microsoft.ServiceFabric.Services.Wcf <br>\-Microsoft.ServiceFabric.Actors <br>\-Microsoft.ServiceFabric.Actors.Wcf | 4.1.409 |https://github.com/Azure/service-fabric-services-and-actors-dotnet |https://www.nuget.org | ||ASP.NET Core Service Fabric integration<br>\-Microsoft.ServiceFabric.Services.AspNetCore.*| 4.1.409 |https://github.com/Azure/service-fabric-aspnetcore |https://www.nuget.org | ||Data, Diagnostics and Fabric transport<br>\-Microsoft.ServiceFabric.Data <br>\-Microsoft.ServiceFabric.Data.Interfaces <br>\-Microsoft.ServiceFabric.Diagnostics.Internal <br>\-Microsoft.ServiceFabric.FabricTransport/Internal | 4.1.409 |N/A| https://www.nuget.org | ||Microsoft.ServiceFabric.Data.Extensions | 4.1.409 | N/A |https://www.nuget.org | |Java SDK |Java SDK | 1.0.6 |N/A |https://mvnrepository.com/artifact/com.microsoft.servicefabric/sf-actors/1.0.6 | |Eclipse |Service Fabric plug-in for Eclipse | 2.0.7 | N/A |N/A | |Yeoman |Azure Service Fabric Java generator | 1.0.7 |https://github.com/Azure/generator-azuresfjava |N/A | ||Azure Service Fabric C# generator | 1.0.9 |https://github.com/Azure/generator-azuresfcsharp |N/A | ||Azure Service Fabric guest executables generator | 1.0.1 |https://github.com/Azure/generator-azuresfguest |N/A| ||Azure Service Fabric Container generators | 1.0.1 |https://github.com/Azure/generator-azuresfcontainer |N/A | |CLI |Service Fabric CLI | 8.0.0 |https://github.com/Azure/service-fabric-cli |https://pypi.python.org/pypi/sfctl | |PowerShell |AzureRM.ServiceFabric | 0.3.15 |https://github.com/Azure/azure-powershell/tree/preview/src/ResourceManager/ServiceFabric |https://www.powershellgallery.com/packages/AzureRM.ServiceFabric/0.3.15 |