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
+3-75Lines changed: 3 additions & 75 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -74,27 +74,6 @@ To implement version-aware logic in your orchestrator function, you can use the
74
74
> [!IMPORTANT]
75
75
> When implementing version-aware logic, it's **critically important** to preserve the exact orchestration logic for older versions. Any changes to the sequence, order, or signature of activity calls for existing versions may break deterministic replay and cause in-flight orchestrations to fail or produce incorrect results. The old version code paths must remain unchanged once deployed.
@@ -119,7 +98,7 @@ public static async Task<string> RunOrchestrator(
119
98
---
120
99
121
100
> [!TIP]
122
-
> 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.
101
+
> 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.
123
102
124
103
> [!TIP]
125
104
> Depending on your situation, you may prefer branching on different levels. You can make a local change precisely where this change is required, like the example shows. Alternatively, you can branch at a higher level, even at the entire orchestrator implementation level, which introduces some code duplication, but may keep the execution flow clear. It's up to you to choose the approach that best fits your scenario and coding style.
@@ -137,7 +116,7 @@ Here's what to expect once you deploy your updated orchestrator function with th
137
116
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.
138
117
139
118
> [!NOTE]
140
-
> This behavior targets the most common situations, and this is what the default configuration provides. However, it can be modified if needed (see [Advanced usage](#advanced-usage) for details).
119
+
> The behavior described in this section targets the most common situations, and this is what the default configuration provides. However, it can be modified if needed (see [Advanced usage](#advanced-usage) for details).
141
120
142
121
143
122
### Example: Replacing an Activity in the Sequence
@@ -159,23 +138,6 @@ This example shows how to replace one activity with a different activity in the
@@ -344,10 +277,6 @@ By default, all new orchestration instances are created with the current `defaul
344
277
345
278
You can override the default version by providing a specific version value when creating new orchestration instances using the orchestration client APIs. This allows fine-grained control over which version each new orchestration instance uses.
346
279
347
-
# [C# (In-process)](#tab/csharp)
348
-
349
-
This feature is not supported in the in-process model.
350
-
351
280
# [C# (Isolated)](#tab/csharp-isolated)
352
281
353
282
```csharp
@@ -424,8 +353,7 @@ Over time, you may want to remove legacy code paths from your orchestrator funct
424
353
425
354
-**Issue**: Version information isn't available in orchestrator
426
355
-**Solution**: Verify that you're using a supported language and a Durable Functions extension version that supports Orchestration Versioning:
427
-
- For .NET Isolated, use `Microsoft.Azure.Functions.Worker.Extensions.DurableTask` version **1.5.0** or later.
428
-
- For .NET In-process, use `Microsoft.Azure.WebJobs.Extensions.DurableTask` version **3.3.0** or later.
356
+
- For .NET Isolated, use `Microsoft.Azure.Functions.Worker.Extensions.DurableTask` version **1.5.0** or later.
0 commit comments