Project: Dapr (App Definition and Development / Application Definition & Image Build)
File: v1.4.0.md

We're happy to announce the release of Dapr 1.4.0! We would like to extend our thanks to all the new and existing contributors who helped make this release happen. Highlights If you're new to Dapr, visit the page and familiarize yourself with Dapr. Service Invocation* Added an HTTP proxy feature for service to service calls similar to gRPC proxy . Now it's easier to use Dapr features with existing HTTP client code. Simply add a line of metadata with your appid, and call the service (without using Dapr's special URLs or requiring Dapr SDK for service invoke). For more info, see the . Pub/Sub* Enabled pub/sub subscribers to perform message routing and filtering based on expressions applied to CloudEvents fields (). . For more info, see the . State Management* Added automatic encryption of data with support for key rotation () . Enable automatic data-at-rest encryption of your state with support for bringing-your-own-key and key rotation. Supports all Dapr state stores. For more info, see the . Bindings* Added the option to specify an HTTP endpoint route for input bindings . For more info, see the . New components* - Docs have been updated with all the new features and changes of this release. To get started with new capabilities introduced in this release, go to the and the . If you are upgrading from 1.3.0, check before proceeding with the upgrade. Then, see section on upgrading Dapr to version 1.4.0. Note: This release contains a few . Thanks to everyone who made this release possible! @1046102779, @AaronCrawfis, @CodeMonkeyLeet, @Fabian-Schmidt, @ItalyPaleAle, @LLKennedy, @TomCools, @UmutComlekci, @amimimor, @artursouza, @beiwei30, @berndverst, @blackstorm, @cshi0, @daixiang0, @dmitsh, @fjvela, @greenie-msft, @halspang, @howlowck, @jigargandhi, @kevinten10, @l0ll098, @li1234yun, @luckyxiaoqiang, @marcmaranon, @marviniter, @matthewgaim, @msfussell, @mthmulders, @mukundansundar, @omidb, @orizohar, @paulyuk, @pkedy, @ravi-k4, @riezebosch, @tanvigour, @theonefx, @variadico, @vikborisov, @wcs1only, @weibubli, @willtsai, @yaron2, @yufan022, @jerrylisl, @variadico RESOLVED Enable automatic encryption of state stores ADDED Support for CloudEvent filtering in PubSub's subscriber RESOLVED Dapr does not support Daemonset RESOLVED Dapr Actors - "TTL" for timers / reminders BLOCKED Cross Pods calls to Dapr sidecar by default in K8s RESOLVED when component yaml format error but there no error log ADDED body to error in case a binding fails RESOLVED Imported components are now configurable. RESOLVED Optimize: Support dashboard service annotation FIXED Data races of placement member state. RESOLVED Add an optional public dapr endpoint for healthz and metadata. RESOLVED feat(diagnostics/binding): add binding reading event to report metrics for grpc protocol RESOLVED Fetch secrets from Operator on Kubernetes and not from sidecar ENABLED reduced sampler assignment times and support all service name of Invoke. RESOLVED fix build error on Arm 32-bit RESOLVED Allow input bindings to specify routes RESOLVED Enable route based proxying for HTTP in addition to gRPC FIXED Data races in placement. RESOLVED Update to Go 1.17 RESOLVED Correct ADR links RESOLVED Add a bit more logging, and split up the binds tests RESOLVED Setting initialOffset to oldest for e2e Kafka configurations RESOLVED feat(components): add in-memory pub/sub RESOLVED Allow unix domain socket mount path RESOLVED Measure publish time E2E tests. RESOLVED Fix actor reminders partitioning on CosmosDB. DELETED Shudown GET API, following deprecation RESOLVED Improve Dapr download speed. RESOLVED dapr init failed RESOLVED Log error messages to

RESOLVED dapr dashboard should add '--address' option for define listen address RESOLVED Add NATS JetStream pubsub component RESOLVED Add Close() to Azure EventHubs binding to clean up client RESOLVED Add Close() to Azure ServiceBusQueues binding to clean up client RESOLVED Add Close() to GCP Bucket binding to clean up client RESOLVED Add Close() to GCP Pubsub binding to clean up client RESOLVED Add Close() to Postgres binding to clean up client RESOLVED Alibaba Cloud TableStore binding RESOLVED Client Credentials authN & authZ is supported by all Dapr components having an Azure implementation RESOLVED Adds support for TTL in Memcached State Store FIXED Dapr state store component is not handling FIRST_WRITE concurrency option correctly RESOLVED Redis state store: using "first-write" and no etag updates the document if it exists RESOLVED Fix Kafka pubsub use of AuthRequired metadata ADDED SMTP binding added priority option ADDED New binding AWS SES RESOLVED daprd snssqs destroys SNS subscription upon termination UPDATED Bump alibaba/sentinel-golang version. RESOLVED SNS and SQS topic/queue names - replace SHA256 with AWS-sanitized names UPDATED Bump go-mssqldb dependency version ADDED Add Event Hubs pubsub and bindings conformance tests FIXED binding SMTP multiple recipients RESOLVED Bump go.mongodb.org/mongo-driver from 1.1.2 to 1.5.1 UPDATED State.cosmosdb component for first-write with etag behavior. ADDED support for default TTL in the Redis State Store component RESOLVED pubsub/aws/snssqs component to support sqs dead-letters queue RESOLVED Update S3 binding RESOLVED Update S3 binding ENABLE setup SMTP binding without user and password ADDED Multi-valued secret support in the local file store RESOLVED Support Azure AD auth for Cosmos DB RESOLVED feat(pubsub): add in-memory pub/sub FIXED Fix parseErr return in blobstorage Init() RESOLVED Add Close() method to influx bindings RESOLVED Patch regression in cosmosdb state component Init RESOLVED Adding `initialOffset` option to Kafka binding and pubsub components RESOLVED Support DefaultIdentificationHydrator in cosmosdb state component RESOLVED Several improvements to the dashboard layout RESOLVED Add a secondary port to try for metadata requests RESOLVED Expose http timeout in ActorProxy ADDED Add match and priority to TopicAttribute for PubSub routing. ADDED Add support for subscribing to raw messages RESOLVED Raspberry Pi4 build issue ADDED Add Dapr authentication handler FIXED Pub/sub binding for Spring Boot properly reads @PostMapping value RESOLVED Automatically unwrap pub/sub CloudEvent RESOLVED Including in Spring Boot project DEPRECATED Builder classes in favor of setters on SDK Request classes RESOLVED Allow development with JDK 16 + add build with multiple JDK versions RESOLVED Invoking a service method inside an Actor method doesn't work RESOLVED Adding optional Rule to subscription annotations for PubSub routing RESOLVED Add matrix build for python versions FIXED Actor Reminders do not honour period value, use due time instead RESOLVED Dev container build breaks on Mac M1 To upgrade to this release of Dapr, follow the steps here to upgrade. Important: If you are running a production cluster and cannot handle some downtime there are special steps that required to upgrade from 1.3.0 to 1.4.0 to ensure no downtime. See for detailed steps Uninstall Dapr using the CLI you currently have installed. Note that this will remove the default $HOME/.dapr directory, binaries and all containers daprredis, daprplacement and

Linux users need to run sudo if docker command needs sudo: ```bash dapr uninstall --all ``` For RC releases like this, download the latest and greatest release from and put the `dapr` binary in your PATH. Once you have installed the CLI, run: ```bash dapr init --runtime-version=1.4.0 ``` Wait for the update to finish, ensure you are using the latest version of Dapr(1.4.0) with: ```bash $ dapr --version CLI version: 1.4.0 Runtime version: 1.4.0 ``` You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI. Download the latest RC release from and put the `dapr` binary in your PATH. To upgrade Dapr, run: ``` dapr upgrade --runtime-version 1.4.0 -k ``` To upgrade with high availability mode: ``` dapr upgrade --runtime-version 1.4.0 --enable-ha=true -k ``` Wait until the operation is finished and check your status with `dapr status -k`. All done! Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar To upgrade Dapr using Helm, run: ``` helm repo add dapr https://dapr.github.io/helm-charts/ helm repo update helm upgrade dapr dapr/dapr --version 1.4.0 --namespace=dapr-system --wait ``` Wait until the operation is finished and check your status with `dapr status -k`. All done! Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar Please see for a complete guide to installing Dapr on Kubernetes You can use Helm 3 to install Dapr: ``` helm repo add dapr https://dapr.github.io/helm-charts/ helm repo update kubectl create namespace dapr-system helm install dapr dapr/dapr --version 1.4.0 --namespace dapr-system --wait ``` Alternatively, you can use the latest version of CLI: ``` dapr init --runtime-version=1.4.0 -k ``` Verify the control plane pods are running and are healthy: ``` $ dapr status -k NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED dapr-dashboard dapr-system True Running 1 0.8.0 15s 2021-09-13 13:07.39 dapr-sidecar-injector dapr-system True Running 1 1.4.0 15s 2021-09-13 13:07.39 dapr-sentry dapr-system True Running 1 1.4.0 15s 2021-09-13 13:07.39 dapr-operator dapr-system True Running 1 1.4.0 15s 2021-09-13 13:07.39 dapr-placement dapr-system True Running 1 1.4.0 15s 2021-09-13 13:07.39 ``` After Dapr 1.4.0 has been installed, perform a rolling restart for your deployments to pick up the new version of the sidecar. This can be done with: ``` kubectl rollout restart deploy/<deployment-name> ``` In 1.3.0 a bug was introduced that prevented no downtime upgrades, meaning the upgrading from 1.3.0 to 1.4.0 causes all the Dapr sidecars in a cluster to restart at the same time. A new patch release v1.3.1 has been released to address this issue. For successful no downtime upgrade, you need to first deploy the v1.3.1 release. Overview This is a fix for a regression caused by making Dapr sidecar crash if it cannot reach the Dapr Operator. Dapr Operator can be down due to upgrades, for example, and should not impact running Dapr sidecars. Dapr guarantees zero downtime upgrades, and this bug violates this guarantee. DO NOT upgrade from 1.3.0 to 1.3.1 or any other version without performing the following steps first: First upgrade the sidecar injector ``` helm repo update helm upgrade dapr dapr/dapr --set-string daprsidecarinjector.image.name=docker.io/daprio/daprd:1.3.1 -n dapr-system ``` Then do a rollout deployment that use the Dapr sidecar ``` kubectl rollout restart deploy/<name> ``` Now, follow as usual. DELETED GET shutdown API, following deprecation BLOCKED Cross Pods calls to Dapr sidecar by default in K8s