From baee5defb0b22ec4be228d30188635a432feb9cc Mon Sep 17 00:00:00 2001 From: Alice Gibbons Date: Mon, 3 Aug 2026 12:24:02 +0100 Subject: [PATCH 1/2] Clarify that retry status-code matching doesn't apply to bulk subscribe RETRY matching.httpStatusCodes/gRPCStatusCodes filter on the transport-level status code of the call, but a bulk subscribe handler's per-entry RETRY status isn't carried as an HTTP or gRPC status code, so it's always retried regardless of the configured matching filter. Co-Authored-By: Claude Sonnet 5 --- .../resiliency/policies/retries/retries-overview.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md b/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md index 78de10bfdbd..10e2ab827ea 100644 --- a/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md +++ b/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md @@ -136,6 +136,10 @@ spec: Field values for status codes must follow the format specified above. An incorrectly formatted value produces an error log ("Could not read resiliency policy") and the `daprd` startup sequence will proceed. {{% /alert %}} +{{% alert title="Note" color="primary" %}} +`matching.httpStatusCodes` and `matching.gRPCStatusCodes` only filter on the transport-level status code of the call to your application. They don't apply to the `RETRY` status returned in a [bulk subscribe]({{% ref pubsub-bulk.md %}}) response body, since that status isn't carried as an HTTP or gRPC status code. A bulk subscribe handler returning `RETRY` for an entry is always retried according to the policy's `duration`/`maxRetries`/backoff settings, regardless of what codes are configured in `matching`. +{{% /alert %}} + ## Demo Watch a demo presented during [Diagrid's Dapr v1.15 celebration](https://www.diagrid.io/videos/dapr-1-15-deep-dive) to see how to set retry status code filters using Diagrid Conductor From 20459e0847322ccc63056420e44f9e5a89a4e52e Mon Sep 17 00:00:00 2001 From: Alice Gibbons Date: Mon, 3 Aug 2026 12:48:33 +0100 Subject: [PATCH 2/2] Updates Signed-off-by: Alice Gibbons --- .../resiliency/policies/retries/retries-overview.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md b/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md index 10e2ab827ea..89513b01dda 100644 --- a/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md +++ b/daprdocs/content/en/operations/resiliency/policies/retries/retries-overview.md @@ -132,12 +132,10 @@ spec: gRPCStatusCodes: "4,8-11,13,14" # retry gRPC status codes in these ranges and separate single codes. ``` -{{% alert title="Note" color="primary" %}} -Field values for status codes must follow the format specified above. An incorrectly formatted value produces an error log ("Could not read resiliency policy") and the `daprd` startup sequence will proceed. -{{% /alert %}} +Retry filtering on status codes only filters on the transport-level status code of the call to your application. It does not apply to [bulk subscribe]({{% ref pubsub-bulk.md %}}), since that status isn't carried as an HTTP or gRPC status code. For instance, a bulk subscribe handler returning `RETRY` for an entry is always retried according to the policy's settings, regardless of what codes are configured. {{% alert title="Note" color="primary" %}} -`matching.httpStatusCodes` and `matching.gRPCStatusCodes` only filter on the transport-level status code of the call to your application. They don't apply to the `RETRY` status returned in a [bulk subscribe]({{% ref pubsub-bulk.md %}}) response body, since that status isn't carried as an HTTP or gRPC status code. A bulk subscribe handler returning `RETRY` for an entry is always retried according to the policy's `duration`/`maxRetries`/backoff settings, regardless of what codes are configured in `matching`. +Field values for status codes must follow the format specified above. An incorrectly formatted value produces an error log ("Could not read resiliency policy") and the `daprd` startup sequence will proceed. {{% /alert %}} ## Demo