From 47bfd7adcc75a837a2cfe5b809f6e62a3700822a Mon Sep 17 00:00:00 2001 From: joshvanl Date: Thu, 28 Aug 2025 14:34:31 -0300 Subject: [PATCH 1/3] [1.16] Adds WorkflowsClusteredDeployment Adds WorkflowsClusteredDeployment feature gate docs. Signed-off-by: joshvanl --- .../content/en/operations/support/support-preview-features.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/daprdocs/content/en/operations/support/support-preview-features.md b/daprdocs/content/en/operations/support/support-preview-features.md index 73139b9cd41..1c4734ed998 100644 --- a/daprdocs/content/en/operations/support/support-preview-features.md +++ b/daprdocs/content/en/operations/support/support-preview-features.md @@ -21,4 +21,5 @@ For CLI there is no explicit opt-in, just the version that this was first made a | **Actor State TTL** | Allow actors to save records to state stores with Time To Live (TTL) set to automatically clean up old data. In its current implementation, actor state with TTL may not be reflected correctly by clients, read [Actor State Transactions]({{% ref actors_api.md %}}) for more information. | `ActorStateTTL` | [Actor State Transactions]({{% ref actors_api.md %}}) | v1.11 | | **Component Hot Reloading** | Allows for Dapr-loaded components to be "hot reloaded". A component spec is reloaded when it is created/updated/deleted in Kubernetes or on file when running in self-hosted mode. Ignores changes to actor state stores and workflow backends. | `HotReload`| [Hot Reloading]({{% ref components-concept.md %}}) | v1.13 | | **Subscription Hot Reloading** | Allows for declarative subscriptions to be "hot reloaded". A subscription is reloaded either when it is created/updated/deleted in Kubernetes, or on file in self-hosted mode. In-flight messages are unaffected when reloading. | `HotReload`| [Hot Reloading]({{% ref "subscription-methods.md#declarative-subscriptions" %}}) | v1.14 | -| **Scheduler Actor Reminders** | Scheduler actor reminders are actor reminders stored in the Scheduler control plane service, as opposed to the Placement control plane service actor reminder system. The `SchedulerReminders` preview feature defaults to `true`, but you can disable Scheduler actor reminders by setting it to `false`. | `SchedulerReminders`| [Scheduler actor reminders]({{% ref "scheduler.md#actor-reminders" %}}) | v1.14 | \ No newline at end of file +| **Scheduler Actor Reminders** | Scheduler actor reminders are actor reminders stored in the Scheduler control plane service, as opposed to the Placement control plane service actor reminder system. The `SchedulerReminders` preview feature defaults to `true`, but you can disable Scheduler actor reminders by setting it to `false`. | `SchedulerReminders`| [Scheduler actor reminders]({{% ref "scheduler.md#actor-reminders" %}}) | v1.14 | +| **Workflows Clustered Deployment** | Enable Workflows to function when workflow clients communicate to multiple daprds of the same appID who are behind a loadbalancer. Only relevant when using [Dapr shared]({{% ref "kubernetes-dapr-shared" %}}) | `WorkflowsClusteredDeployment`| [Dapr Shared]({{% ref "kubernetes-dapr-shared" %}}) | v1.16 | From 054c50a6fb13d17c98deba4023c3c0adbf7d5a4e Mon Sep 17 00:00:00 2001 From: joshvanl Date: Wed, 3 Sep 2025 18:24:32 -0300 Subject: [PATCH 2/3] Adds second about the executor actor type Signed-off-by: joshvanl --- .../building-blocks/workflow/workflow-architecture.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md b/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md index 214ec6d2680..c50a4ed88b3 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md +++ b/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md @@ -253,6 +253,16 @@ An example of scheduling a workflow with a start time of "now" in the Go SDK is client.ScheduleNewWorkflow(ctx, "MyCoolWorkflow", workflow.WithStartTime(time.Now())) ``` +## Dapr Shared + +{{% alert title="Note" color="primary" %}} +The following feature is only available when the [Workflows Clustered Deployment preview feature is enabled]({{% ref "preview-features.md" %}}). +{{% /alert %}} + +When using [Dapr Shared]({{% ref "kubernetes-dapr-shared" %}}), it can be the case that there are multiple daprd sidecars running behind a single load balancer or service. +As such, the instance to which a worker receiving work, may not be the same instance that recives the work result. +Dapr creates a third actor type to handle this scenario: `dapr.internal.{namespace}.{appID}.executor` to handle routing of the worker results back to the correct workflow actor. + ## Next steps {{< button text="Author workflows >>" page="howto-author-workflow.md" >}} From f1d93b71a7abdbb48ba80d87b1823fc89baf39b2 Mon Sep 17 00:00:00 2001 From: Josh van Leeuwen Date: Fri, 5 Sep 2025 21:10:15 -0300 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: Mark Fussell Signed-off-by: Josh van Leeuwen --- .../building-blocks/workflow/workflow-architecture.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md b/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md index c50a4ed88b3..2fdd37d1cf8 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md +++ b/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-architecture.md @@ -253,15 +253,15 @@ An example of scheduling a workflow with a start time of "now" in the Go SDK is client.ScheduleNewWorkflow(ctx, "MyCoolWorkflow", workflow.WithStartTime(time.Now())) ``` -## Dapr Shared +## Workflows cluster deployment when using Dapr Shared with workflow {{% alert title="Note" color="primary" %}} The following feature is only available when the [Workflows Clustered Deployment preview feature is enabled]({{% ref "preview-features.md" %}}). {{% /alert %}} When using [Dapr Shared]({{% ref "kubernetes-dapr-shared" %}}), it can be the case that there are multiple daprd sidecars running behind a single load balancer or service. -As such, the instance to which a worker receiving work, may not be the same instance that recives the work result. -Dapr creates a third actor type to handle this scenario: `dapr.internal.{namespace}.{appID}.executor` to handle routing of the worker results back to the correct workflow actor. +As such, the instance to which a worker receiving work, may not be the same instance that receives the work result. +Dapr creates a third actor type to handle this scenario: `dapr.internal.{namespace}.{appID}.executor` to handle routing of the worker results back to the correct workflow actor to ensure correct operation. ## Next steps