Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions k8s/helm/durable-workflow/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ type: application
# The chart's own semver version. Bumped on every chart release; treated as
# independent of the server image version (appVersion). Breaking-change rules
# for this version live in docs/UPGRADING.md alongside the chart.
version: 1.6.0
version: 1.7.0
# The immutable native Durable Workflow Server this chart release packages.
# The onboarding default in values.yaml and appVersion are generated from the
# checked-in source release record (helm_chart.app_version).
appVersion: "3.8.0"
appVersion: "3.9.0"
kubeVersion: ">=1.27.0-0"
home: https://durable-workflow.github.io/docs/2.0/deployment
sources:
Expand All @@ -30,14 +30,14 @@ annotations:
# exact commit that most recently changed the packaged chart.
org.opencontainers.image.source: https://github.com/durable-workflow/server
dev.durable-workflow.source-revision: "unreleased"
dev.durable-workflow.image-reference: "docker.io/durableworkflow/server:3.8.0"
dev.durable-workflow.image-reference: "docker.io/durableworkflow/server:3.9.0"
artifacthub.io/license: MIT
artifacthub.io/category: integration-delivery
# Free-form changelog for the current chart release shown by Artifact Hub.
artifacthub.io/changes: |
- kind: changed
description: "Default image changes from native Server 3.7.0 to 3.8.0. Every backend needs a schema upgrade (SQLite 11 to 12, PostgreSQL and MariaDB 12 to 13, MySQL 13 to 14) that only creates the empty dw_task_queue_pauses table and takes seconds. Scale to zero, back up, run helm upgrade with native.schemaUpgrade.enabled=true, scale up; rolling back means restoring the backup (docs/UPGRADING.md)."
description: "Default image changes from native Server 3.8.0 to 3.9.0. Every backend needs a schema upgrade (SQLite 12 to 13, PostgreSQL and MariaDB 13 to 14, MySQL 14 to 15) that only creates the empty dw_command_intents table. Scale to zero, back up, run helm upgrade with native.schemaUpgrade.enabled=true, scale up; rolling back means restoring the backup (docs/UPGRADING.md)."
- kind: added
description: "Server 3.8.0: pause and resume activity dispatch on one task queue, advertised as capabilities.task_queue_activity_dispatch_pause (server#577); redrive reuses recorded side effects and version markers (server#980). https://github.com/durable-workflow/server/releases/tag/3.8.0"
description: "Server 3.9.0: signal and update request_id values are durable command keys; reusing a key with different input returns 409 request_id_conflict. A run's own close settles its open activities and timers. https://github.com/durable-workflow/server/releases/tag/3.9.0"
- kind: changed
description: "Server 3.8.0: each MySQL, MariaDB and PostgreSQL pool connection caches up to 200 prepared statements. On MySQL check max_prepared_stmt_count (default 16382 fits about 20 nodes) or lower DW_NATIVE_DB_STATEMENT_CACHE_CAPACITY (server#1174)."
description: "Server 3.9.0 honors the configured storage-admission observation: draining refuses new work while existing leases can finish; fenced permits only reads. Completion uploads during draining remain unavailable (server#951)."
2 changes: 1 addition & 1 deletion k8s/helm/durable-workflow/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ helm install durable-workflow ./k8s/helm/durable-workflow \

```yaml
image:
tag: "3.8.0"
tag: "3.9.0"
# Pin a digest in production:
# digest: "sha256:abc123..."

Expand Down
55 changes: 55 additions & 0 deletions k8s/helm/durable-workflow/docs/UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,61 @@ chart MINOR bump and an entry below.

## Per-version migration notes

### Chart 1.7.0 / Server 3.9.0 (native)

**Every backend needs an explicit native schema upgrade.** Server 3.9.0 adds
one native-only table, `dw_command_intents`, created empty. It rewrites no
existing rows:

| Backend | Schema |
| --- | --- |
| SQLite | 12 to 13 |
| PostgreSQL | 13 to 14 |
| MariaDB | 13 to 14 |
| MySQL | 14 to 15 |

1. Scale the Server to zero, including every replica sharing the database.
2. Back up the database and external payload storage.
3. Run `helm upgrade` with `native.schemaUpgrade.enabled=true` (or the manual
schema-upgrade Job in the chart README) so the 3.9.0 image runs
`schema-upgrade` once.
4. Scale every Server back up on 3.9.0 and confirm readiness and worker
registration.

Rolling back to 3.8.x requires restoring the backup taken in step 2: 3.8.0
refuses the upgraded database with `native_schema_newer_than_binary`.
Started on the earlier schema, 3.9.0 refuses with
`native_schema_upgrade_required`. On MySQL and MariaDB an interrupted
upgrade resumes when `schema-upgrade` is run again; SQLite and PostgreSQL
upgrade in one transaction.

From an earlier release, the same command applies every earlier step. On
MySQL from Server 3.6.x or earlier this includes the Chart 1.5.0 JSON rebuild
below, with its downtime of about 2 minutes per million history rows.

**Behavior changes:**

- A signal or update `request_id` is a durable command key. The same key
with different input returns `409 request_id_conflict` with zero writes.
Do not retry that 409 unchanged. Use the original input to recover the
receipt, or a new key for a new command. This differs from PHP 2.x.
- A run's own complete, fail or continue-as-new now cancels its open
activities and timers before its terminal event. A workflow that needs a
select loser's effect must await it before returning. Workers must handle
final `run_closed` refusals; sdk-php 3.17.0, sdk-python 2.17.0 and sdk-rust
4.15.0 include the matching replay handling.
- Commands with names longer than their database columns now get a typed
`422` before any write, including on SQLite, which previously stored them.

Native also honors `DW_STORAGE_ADMISSION_FILE`,
`DW_STORAGE_ADMISSION_SOURCE` and `DW_STORAGE_ADMISSION_MAX_AGE_SECONDS` when
configured. Draining refuses new work while existing leases can finish;
fenced or unavailable observations permit only reads. Completion uploads
during draining remain unavailable, so workers hold their results and retry
after pressure clears. See the
[storage-admission contract](../../../../docs/storage-admission.md#native-server)
and [Server 3.9.0 release notes](../../../../docs/releases/3.9.0.md).

### Chart 1.6.0 / Server 3.8.0 (native)

**Every backend needs an explicit native schema upgrade.** Server 3.8.0 adds
Expand Down
2 changes: 1 addition & 1 deletion k8s/helm/durable-workflow/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ image:
# scripts/ci/sync-source-release.mjs. Do not edit this default.
# A tag must match the runtime: 3.x (or latest) for native, 2.x for php.
# The chart refuses a mismatch at render time.
tag: "3.8.0"
tag: "3.9.0"
# Optional digest pin. When set, takes precedence over tag for change control.
# Example: "sha256:abc123..."
# The chart cannot see which runtime a digest names. Pin a native digest
Expand Down
4 changes: 2 additions & 2 deletions resources/release/source-release.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"version": "2.11.8"
},
"helm_chart": {
"version": "1.6.0",
"app_version": "3.8.0"
"version": "1.7.0",
"app_version": "3.9.0"
}
}
Loading