
# Dapr 1.6.0

We're happy to announce the release of Dapr 1.6.0!

We would like to extend our thanks to all the new and existing contributors who helped make this release happen.

## Highlights

### Component improvements
This release focused on preparing the next set of components to be ready for `stable` designation per community feedback.  This means certification tests are added and quality issues are addressed. Read [component certification lifecycle](https://docs.dapr.io/operations/components/certification-lifecycle/#certification-levels) for details.

The following components are now officially designated `beta` status, several of which are candidates to become `stable` soon in an upcoming release:
- [MQTT pub/sub](https://v1-6.docs.dapr.io/reference/components-reference/supported-pubsub/setup-mqtt/) (`stable` candidate)
- [RabbitMQ pub/sub](https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-rabbitmq/) (`stable` candidate)
- [Azure Blob Storage binding](https://docs.dapr.io/reference/components-reference/supported-bindings/blobstorage/) (`stable` candidate)
- [Azure CosmosDB binding](https://docs.dapr.io/reference/components-reference/supported-bindings/cosmosdb/) (`stable` candidate)
- [Azure Service Bus Queues binding](https://docs.dapr.io/reference/components-reference/supported-bindings/servicebusqueues/) (`stable` candidate)
- [Azure Event Hubs pub/sub](https://v1-6.docs.dapr.io/reference/components-reference/supported-pubsub/setup-azure-eventhubs/)
- [AWS SNS/SQS pub/sub](https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-aws-snssqs/)

New capabilities were added to existing components:
- Kafka OAuth 2.0 support for [pub/sub](https://v1-6.docs.dapr.io/reference/components-reference/supported-pubsub/setup-apache-kafka/#authentication) & [binding](https://v1-6.docs.dapr.io/reference/components-reference/supported-bindings/kafka/).
- [Azure Event Hubs pub/sub](https://v1-6.docs.dapr.io/reference/components-reference/supported-pubsub/setup-azure-eventhubs/) improvements for topics and partitions.
- Added numerous new capabilities to [Apache Pulsar pub/sub](https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-pulsar/) including: 
    - Tenant namespace support.
    - Backoff policies. 
    - Token authentication support.
    - Ability to disable batching. 

New components added in this release:
- Added [Alibaba Cloud OOS Parameter Store ](https://v1-6.docs.dapr.io/reference/components-reference/supported-secret-stores/alicloud-oos-parameter-store/) - secret store
- Added [Oracle Cloud Infrastructure (OCI) object storage](https://v1-6.docs.dapr.io/reference/components-reference/supported-state-stores/setup-oci-objectstorage/) - state store
 
Components removed from release:
- The [Cloudstate store](https://v1-4.docs.dapr.io/reference/components-reference/supported-state-stores/setup-cloudstate/)  alpha component is no longer included.

### SDK Improvements
- [Application Configuration API (Alpha)](https://docs.dapr.io/developing-applications/building-blocks/configuration/configuration-api-overview/) now available for Python, Java and .NET.
- [Query and Filtering API (Alpha)](https://v1-6.docs.dapr.io/developing-applications/building-blocks/state-management/state-management-overview/#query-api) feature now available for Python, Javascript, Go and .NET.
- [Pub/sub routing](https://docs.dapr.io/developing-applications/building-blocks/pubsub/howto-route-messages/) is now available in the Go SDK. 



### Try it
If you're new to Dapr, visit the [getting started](https://docs.dapr.io/getting-started/) 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 [Concepts](https://docs.dapr.io/concepts/) and the [Developing applications](https://docs.dapr.io/developing-applications/).

> **Note: This release contains a few [breaking changes](#breaking-changes).**

See [this](#upgrading-to-dapr-1.6.0) section on upgrading Dapr to version 1.6.0.

## Details - new in this release

### Dapr Runtime
- **ADDED** API for state store filtering and querying [1339](https://github.com/dapr/dapr/issues/1339)
- **ADDED** Support Actor reminder renaming [3273](https://github.com/dapr/dapr/issues/3273)
- **FIXED** Handle the error when creating http middleware other than ignore it [3657](https://github.com/dapr/dapr/pull/3657)
- **RESOLVED** cosmosdb statestore partitioning broken under load [3716](https://github.com/dapr/dapr/issues/3716)
- **FIXED** Multiple subscriber for a topic in Pub/Sub component with Event hub is not working as expected [3753](https://github.com/dapr/dapr/issues/3753)
- **RESOLVED** Setting global.ha.enabled: true produces deployment yaml with 2 affinity elements [3788](https://github.com/dapr/dapr/issues/3788)
- **FIXED** Cross namespace grpc proxy call in kubernetes fails [3807](https://github.com/dapr/dapr/issues/3807)
- **FIXED** Retry /dapr/subscribe in case of failure or wait for app to get into Ready state [3839](https://github.com/dapr/dapr/issues/3839)
- **FIXED** fix: add missing yaml tag for mtls spec config [3864](https://github.com/dapr/dapr/pull/3864)
- **FIXED** optimize/operator: the server side actively detects whether grpc connection is available [3890](https://github.com/dapr/dapr/pull/3890)
- **FIXED** Fix log output for "daprd --version" call [3895](https://github.com/dapr/dapr/issues/3895)
- **FIXED** Remove Cloudstate state store [3897](https://github.com/dapr/dapr/pull/3897)
- **FIXED** Bug in runtime. daprd does not respond to `shutdown` API command down in a timely fashion. [3930](https://github.com/dapr/dapr/issues/3930)
- **FIXED** Operator logs - Version always shows "ver: unknown" [3948](https://github.com/dapr/dapr/issues/3948)
- **FIXED** Operator unable to see secrets across namespaces when processing component updates - K8s [3949](https://github.com/dapr/dapr/issues/3949)
- **FIXED** Add namespace check for component updates [3952](https://github.com/dapr/dapr/pull/3952)
- **FIXED** daprd crashes if gRPC request arrives before runtime init completes [3982](https://github.com/dapr/dapr/issues/3982)
- **ADDED** Make the grace period configurable [3983](https://github.com/dapr/dapr/issues/3983)
- **FIXED** Reminders and Timer ISO-8601 off-by-one error [3995](https://github.com/dapr/dapr/issues/3995)
- **ADDED** Add DCO requirements and updated code of conduct [4018](https://github.com/dapr/dapr/pull/4018)
- **FIXED** logging of conflict when loading actor state store and fixes to actor reminders partitioning. [4021](https://github.com/dapr/dapr/pull/4021)
- **FIXED** validation for AppID length. [4023](https://github.com/dapr/dapr/issues/4023)
- **FIXED** Clarify message about app channel not initialized [4025](https://github.com/dapr/dapr/issues/4025)
- **FIXED** bugfix: QueryStateAlpha1 return data nil [4039](https://github.com/dapr/dapr/pull/4039)
- **ADDED** Charts - Supports to customize livenessProbe and readinessProbe [4049](https://github.com/dapr/dapr/pull/4049)
- **FIXED** Error in component field causing daprd panic [4054](https://github.com/dapr/dapr/issues/4054)
- **ADDED** Support stateful resource with corresponding service [4061](https://github.com/dapr/dapr/issues/4061)
- **ADDED** Added hostNetwork setting to sidecar injector chart [4074](https://github.com/dapr/dapr/issues/4074)
- **FIXED** Fixed create timer duetime [4075](https://github.com/dapr/dapr/pull/4075)
- **FIXED** compare field causing daprd panic [4083](https://github.com/dapr/dapr/issues/4083)
- **ADDED** Kill sidecar on init if duplicate actor state store. [4087](https://github.com/dapr/dapr/pull/4087)
- **ADDED** Incorporate OCI StorageService state store component in daprd  [4095](https://github.com/dapr/dapr/issues/4095)
- **FIXED** Updated paho.mqtt.golang dependency to fix auto ack issue in MQTT v3 library [4111](https://github.com/dapr/dapr/pull/4111)
- **FIXED** state store: client-side encryption and query api are mutually excluded [4126](https://github.com/dapr/dapr/issues/4126)
- **ADDED** add alibaba cloud oos parameter store support [4142](https://github.com/dapr/dapr/pull/4142)
- **REMOVED** Remove Cloudstate state store [1297](https://github.com/dapr/dapr/pull/3897)
### Dapr CLI
- **FIXED** `dapr status -k` does not work on Windows with KUBECONFIG set [779](https://github.com/dapr/cli/issues/779)
- **FIXED** Pass missing environment variables in CLI [860](https://github.com/dapr/cli/issues/860)
- **FIXED** Detect publish events with CloudEvent envelopes [838](https://github.com/dapr/cli/issues/838)
### Components
- **FIXED** incorrect queue to exchange binding [826](https://github.com/dapr/components-contrib/issues/826)
- **ADDED** New implementation of Azure EventHub PubSub component [951](https://github.com/dapr/components-contrib/issues/951)
- **ADDED** MQTT pubsub component as `stable` candidate [952](https://github.com/dapr/components-contrib/issues/952)
- **ADDED** Azure Blob Storage output binding as `stable` candidate [956](https://github.com/dapr/components-contrib/issues/956)
- **ADDED** Azure Service Bus Queues binding as `stable` candidate [957](https://github.com/dapr/components-contrib/issues/957)
- **ADDED** Azure CosmosDB output binding as `stable` candidate [958](https://github.com/dapr/components-contrib/issues/958)
- **FIXED** Azure Event Hub pubsub component properly handles topics. [964](https://github.com/dapr/components-contrib/issues/964)
- **ADDED** Support OAuth2 authentication with Kafka for pub/sub binding [1084](https://github.com/dapr/components-contrib/issues/1084)
- **ADDED** feature(middleware/routerchecker): avoid sending dirty data to opentelemetry system and logic servers. [1155](https://github.com/dapr/components-contrib/pull/1155)
- **FIXED** Upgrade rocketmq for pubsub [1169](https://github.com/dapr/components-contrib/pull/1169)
- **ADDED** common auth for Service Bus Pubsub/Binding [1201](https://github.com/dapr/components-contrib/pull/1201)
- **ADDED** Support for partition key while publishing to Azure Event Hubs [1225](https://github.com/dapr/components-contrib/issues/1225)
- **FIXED** Kinesis client library needs update [1231](https://github.com/dapr/components-contrib/issues/1231)
- **FIXED** MQTT messages are always acked even if handler returns an error [1234](https://github.com/dapr/components-contrib/issues/1234)
- **FIXED** GCP pub/sub subscription stops working after error [1250](https://github.com/dapr/components-contrib/issues/1250)
- **FIXED**  Route of subscription API does not work on pubsub.pulsar [1263](https://github.com/dapr/components-contrib/issues/1263)
- **FIXED** MQTT output bindings sporadic failure on Create operation. [1282](https://github.com/dapr/components-contrib/issues/1282)
- **REMOVED** Remove Cloudstate state store [1303](https://github.com/dapr/components-contrib/pull/1303)
- **ADDED** PubSub AWS SNS/SQS - Disable Entity Management feature [1313](https://github.com/dapr/components-contrib/issues/1313)
- **FIXED** Redis configuration API subscription [1315](https://github.com/dapr/components-contrib/pull/1315)
- **ADDED** Add S3ForcePathStyle metadata key to S3 binding [1322](https://github.com/dapr/components-contrib/issues/1322)
- **FIXED** Update azure-sdk-for-go to v59.3.0 for EventGrid [1325](https://github.com/dapr/components-contrib/pull/1325)
- **FIXED** AWS SQS/SNS Wrong queue access policy (broken in last version (1.5.0)) [1335](https://github.com/dapr/components-contrib/issues/1335)
- **FIXED** Panic on azure blob storage state store [1351](https://github.com/dapr/components-contrib/issues/1351)
- **FIXED** pub/sub rocketmq:upgrade with v2 [1383](https://github.com/dapr/components-contrib/pull/1383)
- **FIXED** Pub/Sub AWS SNS SQS - disableEntityManagement - SQS policy should not be created [1385](https://github.com/dapr/components-contrib/issues/1385)
- **FIXED** Bind variables cannot be used for table names in cassandra state component [1387](https://github.com/dapr/components-contrib/issues/1387)
- **FIXED** upgrade dgrijalva/jwt-go dependency [1391](https://github.com/dapr/components-contrib/pull/1391)
- **ADDED** Add DCO requirements and updated code of conduct [1395](https://github.com/dapr/components-contrib/pull/1395)
- **FIXED** kafka input binding infinite loop when no topics set [1399](https://github.com/dapr/components-contrib/issues/1399)
- **FIXED** bindings.cron Input & Output communicates through a signal queue [1405](https://github.com/dapr/components-contrib/pull/1405)
- **FIXED** update license to Apache v2.0 [1406](https://github.com/dapr/components-contrib/pull/1406)
- **FIXED** hotfix: bindings.cron Input & Output communicates through a signal queue [1418](https://github.com/dapr/components-contrib/pull/1418)
- **FIXED** Http StatusCode always 200 in middleware HTTP component [1425](https://github.com/dapr/components-contrib/issues/1425)
- **ADDED** Pubsub AWS SNS/SQS - operations timeouts, retrying, backoffs [1426](https://github.com/dapr/components-contrib/issues/1426)
### .NET SDK
- **FIXED** Actor state is reset if execution ends in exception. [762](https://github.com/dapr/dotnet-sdk/issues/762)
- **ADDED** Support for statestore query API [777](https://github.com/dapr/dotnet-sdk/issues/777)
- **ADDED** Support for Configuration API [787](https://github.com/dapr/dotnet-sdk/issues/787)
### Go SDK
- **ADDED** add Unix domain socket support [206](https://github.com/dapr/go-sdk/pull/206)
- **ADDED** add support for statestore query API [215](https://github.com/dapr/go-sdk/issues/215)
- **ADDED** add support for TTL and time/interval formats in actor timers/reminders [222](https://github.com/dapr/go-sdk/issues/222)
- **ADDED** Add Pub/Sub routing support [226](https://github.com/dapr/go-sdk/issues/226)
- **FIXED** Inconsistent TopicEvent Data value between HTTP and gRPC service implementations. [228](https://github.com/dapr/go-sdk/issues/228)
- **FIXED** Fix error saving actor state for readonly changes [233](https://github.com/dapr/go-sdk/pull/233)
- **FIXED** bugfix/apptoken: missing app token verification codes [236](https://github.com/dapr/go-sdk/pull/236)
### Java SDK
- **RESOLVED** Migrated out of JCenter as a Maven repository. [608](https://github.com/dapr/java-sdk/issues/608)
- **FIXED** Spring security context added as additional http header to http request via service invocation  [638](https://github.com/dapr/java-sdk/issues/638)
- **ADDED** Support for Configuration API [659](https://github.com/dapr/java-sdk/issues/659)
- **RESOLVED** Update copyright information to Apache 2.0 [665](https://github.com/dapr/java-sdk/issues/665)
- **ADDED** Add DCO requirements and updated code of conduct [669](https://github.com/dapr/java-sdk/pull/669)
### Python SDK
- **ADDED** support for statestore query API [296](https://github.com/dapr/python-sdk/issues/296)
- **ADDED** support for Get Configuration API [308](https://github.com/dapr/python-sdk/issues/308)
- **ADDED** Deprecation notice for gRPC metadata API field [324](https://github.com/dapr/python-sdk/issues/324)
- **ADDED** Microseconds and milliseconds to timedelta conversion [327](https://github.com/dapr/python-sdk/pull/327)

### JavaScript SDK
- **FIXED** Actors: Should not allow state manipulation outside Actor Runtime [136](https://github.com/dapr/js-sdk/issues/136)
- **ADDED** Feature: Query State API [139](https://github.com/dapr/js-sdk/issues/139)

## Acknowledgements

Thanks to everyone who made this release possible!

@1046102779, @abelperezok, @amimimor, @amulyavarote, @andrey-dubnik, @anhldbk, @artursouza, @berndverst, @ceshihao, @ChethanUK, @chinzhiweiblank, @CodeMonkeyLeet, @CrazyHZM, @cshi0, @daixiang0, @dmitsh, @Gehhilfe, @greenie-msft, @guyzyl, @halspang, @haoxins, @jigargandhi, @jjcollinge, @Juneezee, @LaurenceLiZhixin, @LKI, @ls-2018, @lucasjellema, @marviniter, @mbimbij, @msfussell, @mthmulders, @mukundansundar, @paulyuk, @pkedy, @pravinpushkar, @rabollin, @rainfd, @robsondepaula, @shivamkm07, @sthussey, @Syuparn, @Taction, @tanvigour, @taojwmware, @theonefx, @timonwong, @uptutu, @victorp13, @wcs1only, @willtsai, @withinboredom, @x-shadow-man, @XavierGeerinck, @xj524598, @yaron2, @yordan-pavlov, @zach030, @zcong1993

## Upgrading to Dapr 1.6.0

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?

### Local Machine / Self-hosted

Uninstall Dapr using the CLI you currently have installed. Note that this will remove the default $HOME/.dapr directory, binaries and all containers dapr_redis, dapr_placement 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 [here](https://github.com/dapr/cli/releases) and put the `dapr` binary in your PATH.

Once you have installed the CLI, run:

```bash
dapr init --runtime-version=1.6.0
```

Wait for the update to finish,  ensure you are using the latest version of Dapr(1.6.0) with:

```bash
$ dapr --version

CLI version: 1.6.0
Runtime version: 1.6.0
```

### Kubernetes

#### Upgrading from previous version

You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI.

##### Upgrade using the CLI

Download the latest RC release from [here](https://github.com/dapr/cli/releases) and put the `dapr` binary in your PATH.

To upgrade Dapr, run:

```
dapr upgrade --runtime-version 1.6.0 -k
```

To upgrade with high availability mode:

```
dapr upgrade --runtime-version 1.6.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*

##### Upgrade using Helm

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.6.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*

#### Starting a fresh install on a cluster

Please see [how to deploy Dapr on a Kubernetes cluster](https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-deploy/) 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.6.0 --namespace dapr-system --wait
```

Alternatively, you can use the latest version of CLI:

```
dapr init --runtime-version=1.6.0 -k
```

##### Post installation

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  2022-01-18 13:07.39
  dapr-sidecar-injector  dapr-system  True     Running  1         1.6.0   15s  2022-01-18 13:07.39
  dapr-sentry            dapr-system  True     Running  1         1.6.0   15s  2022-01-18 13:07.39
  dapr-operator          dapr-system  True     Running  1         1.6.0   15s  2022-01-18 13:07.39
  dapr-placement         dapr-system  True     Running  1         1.6.0   15s  2022-01-18 13:07.39
```

After Dapr 1.6.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>
```

## Breaking Changes & Deprecations

### Dapr Runtime
- **REMOVED** Remove Cloudstate state store [1303](https://github.com/dapr/components-contrib/pull/1303)

### Python SDK
- Deprecation notice for gRPC metadata API field [324](https://github.com/dapr/python-sdk/issues/324)

### .NET SDK
- **FIXED** Actor state is now reset if execution ends in an exception.