Skip to content

Commit 979f123

Browse files
committed
Clarify version formats and comparison rules
1 parent affd112 commit 979f123

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,12 @@ To configure the default version for your orchestrations, you need to add or upd
6868
```
6969

7070
The version string can follow any format that suits your versioning strategy:
71-
- Multi-part versioning: `"1.0.0"`, `"2.1.0"`
72-
- Simple numbering: `"1"`, `"2"`
73-
- Date-based: `"2025-01-01"`
74-
- Custom format: `"v1.0-release"`
71+
- Multi-part versioning: `"1.0.0"`, `"2.1.0"` (compared in decreasing order of component importance, similar to semantic versioning)
72+
- Simple numbering: `"1"`, `"2"` (compared as numbers)
73+
- Date-based: `"2025-01-01"` (compared lexicographically)
74+
- Custom format: `"v1.0-release"` (compared lexicographically)
75+
76+
For more details about how different version formats are compared, see [Version comparison rules](#version-comparison-rules).
7577

7678
After you set the `defaultVersion`, all new orchestration instances will be permanently associated with that version.
7779

@@ -227,7 +229,8 @@ For more sophisticated versioning scenarios, you can configure other settings to
227229

228230
The `versionMatchStrategy` setting determines how the runtime matches orchestration versions when loading orchestrator functions. It controls which orchestration instances a worker can process based on version compatibility.
229231

230-
**Configuration:**
232+
#### Configuration
233+
231234
```json
232235
{
233236
"extensions": {
@@ -239,17 +242,17 @@ The `versionMatchStrategy` setting determines how the runtime matches orchestrat
239242
}
240243
```
241244

242-
**Available strategies:**
245+
#### Available strategies
243246

244247
- **`None`** (not recommended): Ignore orchestration version completely. All work received is processed regardless of version. This strategy effectively disables version checking and allows any worker to process any orchestration instance.
245248

246249
- **`Strict`**: Only process tasks from orchestrations with the exact same version as the version specified by `defaultVersion` in the worker's `host.json`. This strategy provides the highest level of version isolation but requires careful deployment coordination to avoid orphaned orchestrations.
247250

248251
- **`CurrentOrOlder`** (default): Process tasks from orchestrations whose version is less than or equal to the version specified by `defaultVersion` in the worker's `host.json`. This strategy enables backward compatibility, allowing newer workers to handle orchestrations started by older orchestrator versions while preventing older workers from processing newer orchestrations.
249252

250-
**Version comparison for `CurrentOrOlder` strategy:**
253+
### Version comparison rules
251254

252-
When the `CurrentOrOlder` strategy is selected, the runtime compares the orchestration instance's version with the `defaultVersion` value of the worker using the following rules:
255+
When the `Strict` or `CurrentOrOlder` strategy is selected, the runtime compares the orchestration instance's version with the `defaultVersion` value of the worker using the following rules:
253256

254257
1. Empty or null versions are treated as equal.
255258
2. An empty or null version is considered older than any defined version.

0 commit comments

Comments
 (0)