Project: Azure Service Fabric (Orchestration & Management / Scheduling & Orchestration)
File: Service_Fabric_ReleaseNotes_10.md

The following packages and versions are part of this release: | Service | Platform | Version | ||-|| |Service Fabric Runtime| Ubuntu 18 <br> Ubuntu 20 <br> Windows | 10.0.1728.1 <br> 10.0.1728.1 <br> 10.0.1816.9590 | |Service Fabric for Windows Server|Service Fabric Standalone Installer Package | 10.0.1816.9590 | |.NET SDK |Windows .NET SDK <br> Microsoft.ServiceFabric <br> Reliable Services and Reliable Actors <br> ASP.NET Core Service Fabric integration| 7.0.1816 <br> 10.0.1816 <br> 7.0.1816 <br> 7.0.1816 | |Java SDK |Java for Linux SDK | 1.0.6 | |Service Fabric PowerShell and CLI | AzureRM PowerShell Module <br> SFCTL | 0.3.15 <br> 11.0.1 | Enhance Container image pruning. Balancing of a cluster per node type. Expose health check phase and timer for application and cluster upgrade. Support ESE.dll version compatibility in the replica building process. Enable Lease probes. Extend the FabricClient constructor to include "SecurityCredentials" without "HostEndpoints". Security audit of cluster management endpoint settings. The legacy auto-compaction settings, "CompactionThresholdInMB", "FreePageSizeThresholdInMB", and "CompactionProbabilityInPercent", are retired and no longer valid for determining auto-compaction at open. Instead, starting from versions 9.1CU3 and 9.0CU9, you should use the new setting, "FreePageSizeThresholdInPercent," to configure auto-compaction at open. <br> Breaking Change: Any pre-existing overrides of the legacy auto-compaction settings will be ignored and aren't used to determine auto-compaction at open. <br> Workaround: To fine-tune the frequency and conditions of auto-compaction, kindly utilize the "FreePageSizeThresholdInPercent" setting. <br>Documentation Reference*: Read more about it at - <ul><li></li></ul> The legacy defragmentation setting, "DefragThresholdInMB," for determining defragmentation occurrences is retired. Regular defragmentation will take place independent of the database size and is performed automatically, leading to a more precise calculation for the physical and logical database size, which is critical for auto-compaction determinations. <br> Breaking Change*: Any existing overrides of the "DefragThresholdInMB" setting will be ignored. <br> The settings, "IntrinsicValueThresholdInBytes" and "DatabasePageSizeInKB", are retired and can no longer be configured by the user.<br> Breaking Change*: Any prior overrides of the "IntrinsicValueThresholdInBytes" and "DatabasePageSizeInKB" settings will be ignored.<br> | Versions | Issue Type | Description | Resolution | |-|-|-|-| |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Enhance Container Image pruning | Brief Description: Container image deletion is a process for cleaning up images, regardless of whether they are hard coded in the service manifest or parameterized during application deployment. To enable image pruning, use the "ContainerImageDeletionEnabled" setting in the Hosting configuration. While the older "PruneContainerImages" configuration is still supported, it is important to note that both "PruneContainerImages" and "ContainerImageDeletionEnabled" configurations are mutually exclusive. <br> Documentation Reference: Read more about it at - <br><ul><li> </ul></li> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Balancing of a cluster per node type | Brief Description: The current balancing configuration of the Cluster Resource Manager (CRM) ensures efficient resource utilization at the cluster level. To provide more granular control, customers can now enable balancing by specifying parameters per node type and allowing movement only on imbalanced node types. This will help optimize performance for node types with specific balancing requirements while maintaining performance for other node types in the cluster.<br> Documentation Reference: Read more about it at - <ul><li></ul></li> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Expose health check phase and timer for application and cluster upgrade | Brief Description: In Service Fabric Explorer, customers can see a more granular view of the upgrade under "Health Check Progress" during monitored upgrade of application instance or

This information includes the current health check phase, the time elapsed in the current phase, and the number of flips that triggered a health check retry. These details can also be viewed in the output of cmdlets "Get-ServiceFabricClusterUpgrade" and "Get-ServiceFabricApplicationUpgrade" using the new properties "MonitoredUpgradeHealthCheckPhase", "HealthCheckElapsedTime" and "HealthCheckRetryFlips".<br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Support ESE.dll version compatibility in the replica building process | Brief Description: When building new idle replicas in KVS, the database file is either physically or logically copied to the secondary replica. During cluster upgrades or downgrades, there may be instances where the idle secondary replica has a lower ESE format version than the primary replica, making the copy method incompatible. <br> Solution: To support future upgrades of the ESE.dll to a new version[^1] the ESE format version field has been added to the Copy Context message which is sent from the secondary to the primary during the initial handshake of the replica-building process to prevent potential incompatibility issues. |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Enable Lease probes | Brief Description: To diagnose node failures, probes are added to evaluate critical resource availability on a node, aiming to expedite issue diagnosis. They trigger reports when the node's system experiences failures in memory allocation, file operations (open, write, close), establishing new connections, or communicating with other nodes. The probes run every 10 seconds to check the availability of resources in the node. During this period, the node undergoes a series of checks, including attempting to allocate 1MB of memory, performing file operations (open, write, close), pinging its listening port (Federation), and checking neighboring nodes listening ports (Federation and lease). If any of these checks fail consecutively for more than twice or once per minute within a 5-minute window, the node reports health warnings. It is worth noting that network-related checks, which require external network communication (not loopback), have a longer failure threshold of 15 minutes before triggering warnings.<br> Documentation Reference: Read more about it at - <br> <ul><li></li><li></li></ul> | Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Extend the FabricClient constructor to include "SecurityCredentials" without "HostEndpoints" | Brief Description: The FabricClient constructor addresses a scenario where the provided parameter "hostEndpoints" is empty or null. When the constructor is used in this way, it is assumed that the code is running inside the cluster, and the FabricClient instance will connect to the cluster via the local Gateway service on the same machine using the provided security credentials. <br>Solution: Customers can now create a FabricClient instance in their applications that can connect to the local cluster with custom security credentials. The Service Fabric SDK will internally determine the local Gateway endpoint, similar to the behavior of the parameter-less FabricClient constructor. This enhancement provides more flexibility and control for connecting to the local cluster with specific security settings. <br> Documentation Reference: Read more about it at - <ul><li></li></ul> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Feature | Security audit of cluster management endpoint settings | Brief Description: Service Fabric audits cluster management endpoint security configurations using Event Tracing for Windows (ETW). The Microsoft-ServiceFabric/Audit Channel collects these audit events and can be viewed in Event Viewer. Node self-attestation events provide detailed information, including the action taken

start, stop, update, or periodic check) on an endpoint, the service name associated with the endpoint (which could be HttpGateway or EntreeServiceProxy), port number, protocol (TCP or HTTP), how the certificate is declared for the endpoint (X509StoreLocation, X509StoreName, X509FindType, X509FindValue), and the certificate identifier bound to the endpoint (CertificateInUseSHA1). These events are currently available on Windows platforms and can be accessed in ETW formats on the VMs, where the EventType is specified as "EndpointSelfAttestation," and the EventId is "3598". Please note that Microsoft does not have permission to access these auditing events stored in customers' VMs and storage accounts, ensuring customer privacy. <br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Bug | Replace "lttng-modules-dkms" with "lttng-tools" as a dependency to Ubuntu 18.04 and 20.04 | Brief Description: The DEB package for Ubuntu 18.04 and 20.04 has been updated to include "lttng-tools" as a dependency of Service Fabric, and the "lttng-modules-dkms" package has been removed as a dependency. Due to the optional nature of the "lttng-tools" package in the "lttng-modules-dkms" dependency, there was a possibility that "lttng-tools" would not be installed with Service Fabric. This led to the malfunctioning of internal Service Fabric traces without "lttng-tools". <br> Solution: To address this issue, the "lttng-tools" package has been added as a mandatory dependency to the Service Fabric package. <br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Bug | Fix race condition between checkpointing of ephemeral keys and enumerations for Reliable Collections | Brief Description: Enumeration operation in Reliable Collection (RC) occasionally throws ArgumentException, impacting current managed RC users that use enumeration. <br>Solution: The issue has been addressed by relaxing the constraint on the internal data structure to allow duplicated keys in a non-steady state.<br>Workaround: Implement a try-catch block to retry the enumeration operation with exponential backoff.<br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Bug | Improve error messages for replicas with Scheduled Backups Enabled | Brief Description: When a replica with scheduled backup configured using Backup Restore Service (BRS) encounters OnDataLossAsync, it waits for user intervention to become available. However, this state is not communicated accurately to users through events, health reports, or exception messages. <br>Solution: This has been addressed by adding events and exception messages thereby providing an accurate description of the state of the replica to the user along with suggesting steps to make the replica healthy. <br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Bug | Fix asynchronous handling and timeout in the BRS | Brief Description: The "GetBackups" API of Backup Restore Service (BRS), operates asynchronously. However, a part of the API makes a synchronous call to enumerate backup data from Azure Blob Storage which would continue retrieving backups even if the client has timed out. This could result in long-running threads in BRS service especially when it is under load. <br>Solution: The fix addresses this issue by converting the Azure Blob Storage call to an asynchronous operation ensuring proper enforcement of API timeouts. As a result, the performance of the GetBackups API is improved significantly. <br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Bug | Fix batch deletion of expired backups in BRS| Brief Description: Presently, in the process of deleting expired backups from the backup store, Backup Restore Service (BRS) attempts to retrieve all backups before initiating the deletion of expired backups. However, this approach can encounter repeated failures if the Backup Store is facing pressure and unable to provide all backups to BRS at

Consequently, this situation prevents BRS from deleting any expired backups, resulting in a continuous accumulation of backup files. <br>Solution: BRS has been updated to remove expired backups in batches. The process involves the sequential processing of backups within distinct batches housed in the Backup Store. Within each batch, expired backups will be deleted prior to advancing to the subsequent batch. <br> |Windows - 10.0.1816.9590<br>Ubuntu 18 - 10.0.1728.1<br>Ubuntu 20 - 10.0.1728.1 | Bug | User intervention required for partitions with backup protection | Brief Description: When data loss occurs in partitions with backup protection, they may revert to an older state without notifying the user, potentially causing data loss, inconsistencies and corruption affecting system usability and functionality. <br>Solution: Partitions with backup protection enabled will now wait for user intervention before restoring its state. <br> Ubuntu 18.04 LTS reached its 5-year end-of-life window on June-2023. Service Fabric runtime has dropped support for 18.04 LTS after the published date, and we recommend moving your clusters and applications to supported versions listed here: Previously communicated, Service Fabric runtime had planned to remove Service Fabric runtime version 6.4 packages and older, as well as SDK version 3.3 packages and older, from the package Download Center in July 2023. We would like to inform you that this timeline has been extended, and the removal will now take place in January 2024. Service Fabric runtime will soon be archiving and removing Service Fabric runtime versions less than 7.2 and older, as well as the corresponding SDK version 4.2 packages and older from the package Download Center. Archiving/Removing will affect application scaling and re-imaging of virtual machines in a Service Fabric Cluster running on unsupported versions. After older versions are removed/archived, this may cause failure while rolling back when the current in-progress upgrade has errors.<br> To prevent disruption of workloads, create a new cluster using the following steps:<ul><li></li><li></li></ul> Install the supported version of Service Fabric SDK based on the Runtime version installed on the cluster. 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 | Direct Download Link | Repository | |-|-|-|-|-| |Service Fabric Runtime |Ubuntu Developer Set-up | 10.0.1728.1 | 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/ | N/A || Windows Developer Set-up| 10.0.1816.9590 | https://download.microsoft.com/download/b/8/a/b8a2fb98-0ec1-41e5-be98-9d8b5abf7856/MicrosoftServiceFabric.10.0.1816.9590.exe | N/A | |Service Fabric for Windows Server |Service Fabric Standalone Installer Package | 10.0.1816.9590 |https://download.microsoft.com/download/8/3/6/836E3E99-A300-4714-8278-96BC3E8B5528/10.0.1816.9590/Microsoft.Azure.ServiceFabric.WindowsServer.10.0.1816.9590.zip | N/A| ||Service Fabric Standalone Runtime | 10.0.1816.9590 |https://download.microsoft.com/download/B/0/B/B0BCCAC5-65AA-4BE3-AB13-D5FF5890F4B5/10.0.1816.9590/MicrosoftAzureServiceFabric.10.0.1816.9590.cab | N/A | |.NET SDK |Windows .NET SDK | 7.0.1816 |https://download.microsoft.com/download/b/8/a/b8a2fb98-0ec1-41e5-be98-9d8b5abf7856/MicrosoftServiceFabricSDK.7.0.1816.msi | N/A | ||Microsoft.ServiceFabric | 10.0.1816 | https://www.nuget.org | N/A | ||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 | 7.0.1816 | https://www.nuget.org | https://github.com/Azure/service-fabric-services-and-actors-dotnet | ||ASP.NET Core Service Fabric integration<br>\-Microsoft.ServiceFabric.Services.AspNetCore.*| 7.0.1816 | https://www.nuget.org | https://github.com/Azure/service-fabric-aspnetcore | ||Data, Diagnostics and Fabric transport<br>\-Microsoft.ServiceFabric.Data <br>\-Microsoft.ServiceFabric.Data.Interfaces <br>\-Microsoft.ServiceFabric.Diagnostics.Internal <br>\-Microsoft.ServiceFabric.FabricTransport/Internal | 10.0.1816 |https://www.nuget.org | N/A| ||Microsoft.ServiceFabric.Data.Extensions | 10.0.1816 | https://www.nuget.org | N/A | |Java SDK |Java SDK | 1.0.6 |https://mvnrepository.com/artifact/com.microsoft.servicefabric/sf-actors/1.0.6 | N/A | |Eclipse |Service Fabric plug-in for Eclipse | 2.0.7 | N/A |N/A | |Yeoman |Azure Service Fabric Java generator | 1.0.7 | N/A |https://github.com/Azure/generator-azuresfjava | ||Azure Service Fabric C# generator | 1.0.9 | N/A |https://github.com/Azure/generator-azuresfcsharp | ||Azure Service Fabric guest executables generator | 1.0.1 | N/A |https://github.com/Azure/generator-azuresfguest| ||Azure Service Fabric Container generators | 1.0.1 | N/A |https://github.com/Azure/generator-azuresfcontainer | |CLI |Service Fabric CLI | 11.0.1 | https://pypi.python.org/pypi/sfctl | https://github.com/Azure/service-fabric-cli| |PowerShell |AzureRM.ServiceFabric | 0.3.15 | N/A |https://github.com/Azure/azure-powershell/tree/preview/src/ResourceManager/ServiceFabric |