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
- Fix minor typos
- Move the public preview note
- Remove redundant explanation of Orchestration Versioning benefits for clarity
- Add backend agnostic benefit to Orchestration Versioning section
- Rename section "How to handle breaking changes" to "Types of breaking changes" for clarity
Copy file name to clipboardExpand all lines: articles/azure-functions/durable/durable-functions-orchestration-versioning.md
+7-8Lines changed: 7 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,12 +11,6 @@ ms.custom: fasttrack-edit
11
11
12
12
# Orchestration Versioning in Durable Functions (Azure Functions)
13
13
14
-
> [!IMPORTANT]
15
-
> Orchestration Versioning is currently in public preview for apps running in the .NET isolated model. Use `Microsoft.Azure.Functions.Worker.Extensions.DurableTask` package version **>=1.5.0**.
16
-
> Support for other languages (JavaScript, Python, PowerShell, Java) is coming soon.
17
-
18
-
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.
19
-
20
14
## Overview
21
15
22
16
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.
@@ -29,6 +23,7 @@ Sub-orchestrations can also leverage this feature.
29
23
-**Rolling upgrades**: Workers running different versions of orchestrator code can coexist safely.
30
24
-**Automatic version isolation**: The runtime ensures version compatibility automatically.
31
25
-**Minimal configuration**: Built-in feature requiring only basic `host.json` configuration.
26
+
-**Backend agnostic**: Feature can be used by apps leveraging any of the Durable Function's [storage backends](durable-functions-storage-providers.md).
32
27
33
28
### How It Works
34
29
@@ -42,9 +37,13 @@ The Orchestration Versioning feature operates on these core principles:
42
37
43
38
1.**Forward Protection**: The runtime automatically prevents workers running older versions from executing orchestrations started by newer versions.
44
39
40
+
> [!IMPORTANT]
41
+
> Orchestration Versioning is currently in public preview for apps running in the .NET isolated model. Use `Microsoft.Azure.Functions.Worker.Extensions.DurableTask` package version **>=1.5.0**.
42
+
> Support for other languages (JavaScript, Python, PowerShell, Java) is coming soon.
43
+
45
44
## Basic usage
46
45
47
-
The most common use case for Orchestration Versioning is when you need to make breaking changes to your orchestrator logic while keeping existing in-flight orchestrations instances running with their original version. All you need to do is update the `defaultVersion` in your `host.json` and modify your orchestrator code to check the version and branch execution accordingly. Let's walk through the required steps.
46
+
The most common use case for Orchestration Versioning is when you need to make breaking changes to your orchestrator logic while keeping existing in-flight orchestration instances running with their original version. All you need to do is update the `defaultVersion` in your `host.json` and modify your orchestrator code to check the version and branch execution accordingly. Let's walk through the required steps.
48
47
49
48
### Step 1: defaultVersion Configuration
50
49
@@ -99,7 +98,7 @@ public static async Task<string> RunOrchestrator(
99
98
---
100
99
101
100
> [!NOTE]
102
-
> The `context.Version` property is **read-only** and reflects the version that was permanently associated with the orchestration instance when it was created. You cannot modify this value during orchestration execution. If you want to specify a version through means other than `host.json`, you can do so when starting an orchestration instance with the orchestration client APIs, (see [Starting New Orchestrations with Specific Versions](#starting-new-orchestrations-with-specific-versions)).
101
+
> The `context.Version` property is **read-only** and reflects the version that was permanently associated with the orchestration instance when it was created. You cannot modify this value during orchestration execution. If you want to specify a version through means other than `host.json`, you can do so when starting an orchestration instance with the orchestration client APIs (see [Starting New Orchestrations with Specific Versions](#starting-new-orchestrations-with-specific-versions)).
103
102
104
103
> [!TIP]
105
104
> If you're just starting to use Orchestration Versioning and you already have in-flight orchestrations that were created before you specified a `defaultVersion`, it's not too late! Feel free to add the `defaultVersion` setting to your `host.json` now. For all previously created orchestrations, `context.Version` returns `null` (or an equivalent language-dependent value), so you can structure your orchestrator logic to handle both the legacy (null version) and new versioned orchestrations accordingly. In C#, you can check for `context.Version == null` or `context.Version is null` to handle the legacy case. Please also note that specifying `"defaultVersion": null` in `host.json` is equivalent to not specifying it at all.
Copy file name to clipboardExpand all lines: articles/azure-functions/durable/durable-functions-versioning.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ ms.author: azfuncdf
11
11
12
12
It is inevitable that functions will be added, removed, and changed over the lifetime of an application. [Durable Functions](durable-functions-overview.md) allows chaining functions together in ways that weren't previously possible, and this chaining affects how you can handle versioning.
13
13
14
-
## How to handle breaking changes
14
+
## Types of breaking changes
15
15
16
16
There are several examples of breaking changes to be aware of. This article discusses the most common ones. The main theme behind all of them is that both new and existing function orchestrations are impacted by changes to function code.
0 commit comments