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

We're happy to announce the release of Dapr 1.5.0! We would like to extend our thanks to all the new and existing contributors who helped make this release happen. The Dapr Steering and Technical Committee (STC) to change the components certification criteria and rename components from `GA` to `Stable`. The following components are now upgraded to `Stable` indicating that they are suitable for use in production scenarios: In addition, multiple fixes have been made to other components including RabbitMQ pub/sub, MySQL state store, and PostgreSQL state store. For more information see the . The state management building block API now includes a query API, currently in `Alpha` state. This API provides a way of querying the key/value data stored in state store components. It is not a replacement for a complete query language, and is focused on retrieving, filtering and sorting key/value data that you have saved through the state store APIs. Even though the state store is a key/value store, the value might be a JSON document with its own hierarchy, keys, and values. This query API allows you to use those keys and values to retrieve corresponding documents. For more information read the . Configuration is a new building block API introduced in this release and is currently in `Alpha` state. Consuming application configuration is a common task when writing applications and frequently configuration stores are used to manage this configuration data. A configuration item is often dynamic in nature and is tightly coupled to the needs of the application that consumes it. The Configuration API provides an abstraction over different stores and exposes key/value data and importantly with the ability to subscribe to configuration item update notfications. In this initial release this API can only be used over gRPC. HTTP will be made available before the final stable release (for example, `\v1.0\configuration\myconfigstore`). For more information read the . Virtual actors are now available in the Dapr Go SDK. See for details. For a Dapr actor example using the Go SDK, see . Enhancements to the actor runtime were released to improve reliability. See and for details. Dapr CLI, sidecar and Dashboard are now natively compiled for ARM64 Macs. Also, Dapr CLI installation via Homebrew was fixed. See the for details. New components added to this release include: If you're new to Dapr, visit the page and familiarize yourself with Dapr. 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 . See section on upgrading Dapr to version

Thanks to everyone who made this release possible! @1046102779, @AaronCrawfis, @abhishek-galoda, @alvinhenrick, @amimimor, @anhldbk, @AnyISalIn, @apuzyrevsky, @artursouza, @beiwei30, @berndverst, @caogj, @CodeMonkeyLeet, @CrazyHZM, @cshi0, @cwdsuzhou, @daixiang0, @DarinShapiroMS, @Darquewarrior, @denis111, @dmitsh, @doddgu, @fjvela, @greenie-msft, @halspang, @hokandil, @huiyangz, @ItalyPaleAle, @jjcollinge, @Juneezee, @krutsko, @l0ll098, @LaurenceLiZhixin, @li1234yun, @marviniter, @mnussbaum, @msfussell, @mthmulders, @mukundansundar, @orizohar, @penghuima, @pkedy, @qmhu, @ravi-k4, @richgo, @swuecho, @Taction, @tanvigour, @theonefx, @tomkerkhove, @wcs1only, @willtsai, @wmeints, @workfigure, @XavierGeerinck, @yaron2 RESOLVED Improve the reliability of partition table dissemination for actors ADDED Configuration API FIXED Http opa middleware crash RESOLVED Pass ReadBufferSize argument to fasthttp server and grpc server ADDED New parameters to add custom label at pod level FIXED Dapr runtime sends InputBinding events to undesignated locations FIXED Postgres support for actors RESOLVED Add tolerations support to Helm Chart values. RESOLVED Fixed typo in secret store init RESOLVED Operator: hide debug log FIXED Metadata headers not sent to server via dapr gRPC proxy FIXED Put 'kubernetes-admin' in allow list ADDED State Store Query API RESOLVED Retriable pubsub error should include the topic in the logging RESOLVED Make release notes script list authors while ignoring case RESOLVED Support for PATCH request in service invocation RESOLVED Create unit test for admission control FIXED Fixed panic sending on a nil gRPC stream in the placement heartbeat loop ADDED Support to override sidecar image per app in K8s via `dapr.io/sidecar-image` FIXED Resource leak for grpc server connection FIXED Crash backoff in dapr operator after upgrade to 1.4.3 (helm doesn't upgrade CRDs definitions) FIXED gRPC inbound request metrics is empty RESOLVED Default W3CString should not be passed down RESOLVED Automatically set GOMAXPROCS to match Linux container CPU quota RESOLVED Change API version of PodDisruptionBudget to policy/v1 when supported FIXED Binding event panic ADDED Support for Kafka version setting in Pubsub RESOLVED Cleanly shutdown HTTP and gRPC servers when Dapr is shutdown ADDED azure.cosmosdb.gremlinapi binding ADDED Support for unix domain socket FIXED use input param namespace when listing Pods RESOLVED Allow specifying of runtime-version via Env Var for `dapr init` RESOLVED Certify Azure SQL Server as stable in state store RESOLVED Certify Apache Kafka as stable in pubsub RESOLVED Certify Azure Key Vault w/ Managed Identity as stable in secret store ADDED User agent header for Azure services ADDED Azure Service Bus message metadata for Pubsub ADDED Delay queue params for Pulsar FIXED Postgres state store and add it to conformance tests ADDED Mysql conformance test ADDED Enhancements to CREATE operation GCP Storage Bucket binding + adds GET, DELETE and LIST FIXED Azure Storage Queue resolving extra double quotation RESOLVED Update Azure Service Bus Go SDK to latest RESOLVED RabbitMQ binding uses text/plain as content type RESOLVED Pass the message body in OPA middleware FIXED RabbitMQ pubsub ignores 'durable' metadata FIXED RabbitMQ pubsub does not handle channel closing properly FIXED TLS with Kafka pubsub component UPDATED paho.mqtt.golang to v1.3.5 RESOLVED binding/mysql: optimize output error RESOLVED Reconnect RabbitMQ on 'unexpected command received' error RESOLVED add metadata to query request/response ADDED Support message-id property from IoTHub device events in EventHubs RESOLVED restrict sns/sqs pubsub subscription permissions FIXED MQTT bindings can hang on Close() RESOLVED Body of email empty in SMTP binding when invoking the binding over gRPC FIXED Body content parsing for SMTP binding ADDED Warning generated by SMTP binding when username and password are both set. ADDEDED Option to override Kafka Broker version RESOLVED Renamed package for CosmosDB.GramlinAPI binding component ADDED Configurable base URL RESOLVED Generate binaries for Darwin ARM64 (including M1 Macs) RESOLVED Support .net 6 preview 4 new Minimal APIs RESOLVED Response.BodyWriter on Net6.0 Required Call CompleteAsync()? RESOLVED Report error correctly for missing route key on ADDED Support for gRPC proxying RESOLVED StateManager request don't have dapr-api-token

RESOLVED Allow multiple topics to call the same endpoint RESOLVED IIS Express Problem - app returned http status code 400 from subscription endpoint FIXED Falsely logged default subscription message ADDED Actor support RESOLVED Add metadata support for PublishEvent API RESOLVED Rationalize PublishEvent* APIs RESOLVED By default, gRPC limits incoming messages to 4 MB and expose parameter to allow user to set the limit RESOLVED Decode data_base64 cloudEvent for http service FIXED HTTP service stop method doesn't do anything RESOLVED Dapr client doesn't report failure when instantiated without a daprd connection RESOLVED Make client init fail if server connection fails RESOLVED Data argument not sent to output binding when calling `DaprClient.invoke_binding` RESOLVED DaprJSONEncoder bug To upgrade to this release of Dapr, follow the steps here to ensure a smooth upgrade. You know, the one where you don't get red errors on the terminal.. we all hate that, right? 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 dapr_zipkin. 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.5.0 ``` Wait for the update to finish, ensure you are using the latest version of Dapr(1.5.0) with: ```bash $ dapr --version CLI version: 1.5.0 Runtime version: 1.5.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.5.0 -k ``` To upgrade with high availability mode: ``` dapr upgrade --runtime-version 1.5.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.5.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 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.5.0 --namespace dapr-system --wait ``` Alternatively, you can use the latest version of CLI: ``` dapr init --runtime-version=1.5.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.9.0 15s 2021-11-09 13:07.39 dapr-sidecar-injector dapr-system True Running 1 1.5.0 15s 2021-11-09 13:07.39 dapr-sentry dapr-system True Running 1 1.5.0 15s 2021-11-09 13:07.39 dapr-operator dapr-system True Running 1 1.5.0 15s 2021-11-09 13:07.39 dapr-placement dapr-system True Running 1 1.5.0 15s 2021-11-09 13:07.39 ``` After Dapr 1.5.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> ``` None.