From 31019b122fbbd4a62f12692bd679ff3dd4bf30be Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Tue, 6 Oct 2026 08:12:24 +0000 Subject: [PATCH 1/2] Prepare stable PHP SDK 2.2.0 for Server 2.5.0 --- composer.json | 4 ++-- docs/quickstart-contract.json | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index ef682e4..34cfca6 100644 --- a/composer.json +++ b/composer.json @@ -82,8 +82,8 @@ } }, "durable-workflow": { - "product-train": "2.2.0-rc.1", - "supported-server-versions": "2.5.0-rc.1", + "product-train": "2.2.0", + "supported-server-versions": "2.5.0", "worker-protocol-version": "1.19", "control-plane-version": "2", "durable-selection": true, diff --git a/docs/quickstart-contract.json b/docs/quickstart-contract.json index 164c002..16a2ce1 100644 --- a/docs/quickstart-contract.json +++ b/docs/quickstart-contract.json @@ -3,9 +3,9 @@ "schema_version": 2, "package": { "name": "durable-workflow/sdk", - "published_version": "2.2.0-rc.1", - "composer_requirement": "2.2.0-rc.1", - "onboarding_requirement": "^2.2@RC" + "published_version": "2.2.0", + "composer_requirement": "2.2.0", + "onboarding_requirement": "^2.2" }, "runtime_targets": { "server": { @@ -13,7 +13,7 @@ "namespace_input": "default", "input_kind": "server_origin", "example_request": "http://localhost:8080/api/workflows", - "image": "durableworkflow/server:2.5.0-rc.1" + "image": "durableworkflow/server:2.5.0" }, "cloud": { "client_input": "https://cloud.example/api/runtime/v1/namespaces/", From 9d8c449bb896a6fa574ff27b1c29751e6d74a009 Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Tue, 6 Oct 2026 08:15:27 +0000 Subject: [PATCH 2/2] Express bounded poll retry without unreachable fallback --- src/Client.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Client.php b/src/Client.php index e0953d6..e6b0d9e 100644 --- a/src/Client.php +++ b/src/Client.php @@ -2034,11 +2034,13 @@ private function isValidExternalPayloadReference(mixed $value): bool */ private function pollTaskResponse(string $path, array $body): array { - for ($attempt = 0; $attempt < 2; ++$attempt) { + $retryTransientFailure = true; + while (true) { try { return $this->worker('POST', $path, $body); } catch (ServerException $exception) { - if ($attempt === 0 && $exception->isTransientConnectionFailure()) { + if ($retryTransientFailure && $exception->isTransientConnectionFailure()) { + $retryTransientFailure = false; continue; } @@ -2055,8 +2057,6 @@ private function pollTaskResponse(string $path, array $body): array return $response; } } - - return []; } /**