You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/azure-functions/durable/durable-functions-orchestration-versioning.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: Orchestration Versioning in Durable Functions - Azure
3
-
description: Learn how to use the Orchestration Versioning feature in Durable Functions for zero-downtime deployments with breaking changes.
3
+
description: Learn how to use the Orchestration Versioning feature in Durable Functions for zero-downtime deployments involving breaking changes.
4
4
author: AnatoliB
5
5
ms.topic: conceptual
6
6
ms.date: 07/03/2025
@@ -12,14 +12,16 @@ ms.custom: fasttrack-edit
12
12
# Orchestration Versioning in Durable Functions (Azure Functions)
13
13
14
14
> [!IMPORTANT]
15
-
> Orchestration Versioning is currently in public preview for .NET in-process and .NET isolated programming models. Support for other languages (JavaScript, Python, PowerShell, Java) is coming soon.
15
+
> Orchestration Versioning is currently in public preview for apps running in the .NET isolated model. Support for other languages (JavaScript, Python, PowerShell, Java) is coming soon.
16
16
17
-
The Orchestration Versioning feature in Durable Functions enables zero-downtime deployments even when you need to make breaking changes to your orchestrations. This feature allows different versions of orchestrations to coexist and execute concurrently without conflicts and nondeterminism issues, making it possible to deploy updates without draining in-flight orchestration instances first.
17
+
The Orchestration Versioning feature allows different versions of orchestrations to coexist and execute concurrently without conflicts and nondeterminism issues, making it possible to deploy updates without draining in-flight orchestration instances first. Thus, this feature brings various benefits related to deploying orchestration changes. For example, you can achieve zero-downtime deployment even making breaking changes to your orchestrations.
18
18
19
19
## Overview
20
20
21
21
Orchestration Versioning addresses the core challenge of deploying changes to orchestrator functions while maintaining the deterministic execution model that Durable Functions requires. Without this feature, breaking changes to orchestrator logic or activity function signatures would cause in-flight orchestration instances to fail during replay because they would break the [determinism requirement](durable-functions-code-constraints.md) that ensures reliable orchestration execution.
22
22
23
+
Sub-orchestrations can also leverage this feature.
24
+
23
25
### Key Benefits
24
26
25
27
-**Zero-downtime deployments**: Deploy breaking changes without waiting for in-flight orchestrations to complete.
@@ -126,11 +128,11 @@ public static async Task<string> RunOrchestrator(
126
128
127
129
Here's what to expect once you deploy your updated orchestrator function with the new version logic:
128
130
129
-
1.**Worker Coexistence**: Workers containing the new orchestrator function code will start, potentially while some workers with the old code are still active.
131
+
1.**Worker Coexistence**: Workers containing the new orchestrator function code will start, while some workers with the old code are potentially still active.
130
132
131
-
2.**Version Assignment for New Instances**: All new orchestrations and suborchestrations created by the new workers will get the version from `defaultVersion` assigned to them. The parent orchestration version _isn't_automatically propagated to suborchestrations created by this orchestration.
133
+
2.**Version Assignment for New Instances**: All new orchestrations and sub-orchestrations created by the new workers will get the version from `defaultVersion` assigned to them. Note that the parent orchestration _doesn't_propagate its version to sub-orchestrations it starts.
132
134
133
-
3.**New Worker Compatibility**: New workers will be able to process both the newly created orchestrations and the previously existing orchestrations because the changes performed in Step 2 ensure backward compatibility through version-aware branching logic.
135
+
3.**New Worker Compatibility**: New workers will be able to process both the newly created orchestrations and the previously existing orchestrations because the changes performed in Step 2 of the previous section ensure backward compatibility through version-aware branching logic.
134
136
135
137
4.**Old Worker Restrictions**: Old workers will be allowed to process only the orchestrations with a version _equal to or lower_ than the version specified in their own `defaultVersion` in `host.json`, because they aren't expected to have orchestrator code compatible with newer versions. This restriction prevents execution errors and unexpected behavior.
0 commit comments