Skip to content

Commit 7ccd718

Browse files
committed
Address feedback
- 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
1 parent 77cd4d1 commit 7ccd718

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

articles/azure-functions/durable/durable-functions-orchestration-versioning.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@ ms.custom: fasttrack-edit
1111

1212
# Orchestration Versioning in Durable Functions (Azure Functions)
1313

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-
2014
## Overview
2115

2216
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.
2923
- **Rolling upgrades**: Workers running different versions of orchestrator code can coexist safely.
3024
- **Automatic version isolation**: The runtime ensures version compatibility automatically.
3125
- **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).
3227

3328
### How It Works
3429

@@ -42,9 +37,13 @@ The Orchestration Versioning feature operates on these core principles:
4237

4338
1. **Forward Protection**: The runtime automatically prevents workers running older versions from executing orchestrations started by newer versions.
4439

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+
4544
## Basic usage
4645

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.
4847

4948
### Step 1: defaultVersion Configuration
5049

@@ -99,7 +98,7 @@ public static async Task<string> RunOrchestrator(
9998
---
10099

101100
> [!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)).
103102
104103
> [!TIP]
105104
> 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.

articles/azure-functions/durable/durable-functions-versioning.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ms.author: azfuncdf
1111

1212
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.
1313

14-
## How to handle breaking changes
14+
## Types of breaking changes
1515

1616
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.
1717

0 commit comments

Comments
 (0)