dapr v1.17.0 版本更新介绍
发布日期: 2026-02-27
版本号: v1.17.0
Dapr 1.17版本正式发布,重点推出了工作流版本控制功能,允许安全地演进长时间运行的工作流代码而不影响正在执行的实例。本版本还引入了工作流状态保留策略、端到端追踪能力,并将工作流吞吐量提升了高达41%,使其能够满足高要求的生产环境工作负载。批量发布订阅API现已稳定,Placement服务的可靠性得到增强,CLI新增了工作流和调度器的管理命令。此外,各主要语言的SDK均进行了相应更新,包括工作流版本支持等新特性。用户可通过CLI或Helm将本地或Kubernetes环境中的Dapr升级到1.17版本。
更新内容 (中文)
Dapr 1.17
我们很高兴地宣布发布 Dapr 1.17!此版本引入了工作流版本控制,使您能够安全地演进长时间运行的工作流代码,而不会中断正在进行的实例。结合新的状态保留策略、高达 41% 的工作流吞吐量提升以及端到端的追踪功能,Dapr 工作流现已准备好应对最严苛的生产工作负载。此版本还稳定了批量发布/订阅 API,改进了 Placement 服务的弹性,并添加了用于管理工作流和调度器的新 CLI 命令。
感谢所有新老贡献者帮助实现此版本。
如果您是 Dapr 新手,请访问入门页面并熟悉 Dapr。
文档已更新,包含此版本的所有新功能和变更。要了解此版本引入的新功能,请前往概念和开发应用程序。
请前往升级 Dapr 部分了解升级到 1.17 版本的步骤。
致谢
感谢所有让此版本成为可能的人!
@acroca, @adam6878, @AdarshRavichandran, @addjuarez, @aharonYK, @akotsarelation, @alekhrycaiko, @alicejgibbons, @ankurinfoblox, @antontroshin, @artur-ciocanu, @artursouza, @atrauzzi, @BlackRider97, @by-nelson, @CasperGN, @cicoyle, @citymaus, @ConstantinChirila, @cr3ativ3cod3r, @daanschutte, @DeepanshuA, @Eileen-Yu, @elena-kolevska, @famarting, @FarmerChillax, @filintod, @Flern, @fyzanshaik, @fyzanshaik-atlan, @halspang, @HusseinYasser, @imneov, @ItalyPaleAle, @javier-aliaga, @JeffreyJPZ, @jjcollinge, @jmfloreszazo, @johansja, @joshm998, @JoshVanL, @jslatten, @kapilthareja, @kaspernissen, @kayaj1009, @kgal-akl, @lijujoseph4, @lindner, @lony2003, @lrascao, @majiayu000, @marcduiker, @MasayaAoyama, @mcruzdev, @MichaelHindley, @middt, @mikeee, @mohitpalsingh, @msfussell, @MyMirelHub, @nelson-parente, @ngruson, @nikitasarawgi, @nmalocic, @oglok, @olitomlinson, @passuied, @paulorfjesus, @philliphoff, @pravinpushkar, @RaymundoZa, @robertojrojas, @RyanLettieri, @sadath-12, @salaboy, @seal90, @sicoyle, @siri-varma, @SpiffyEight77, @StarJourneyMingsing, @StoopidBoi-6128, @sunnynagavo, @TheForbiddenAi, @titanventura, @tmacam, @tomflenner, @WhitWaldo, @wlfgang, @yaron2, @ytimocin, @ZeBobo5, @ZeynelKoca, @zglp
亮点
以下是 v1.17 版本的亮点:
工作流版本控制
Dapr v1.17 引入了工作流版本控制,为开发者提供了工具,可以在工作流代码进行演进的同时,确保正在进行的工作流实例继续正确运行。这至关重要,因为 Dapr 工作流是持久的,可能长时间运行,并且应用升级可能引入更改,从而破坏现有工作流实例的确定性重放。 Dapr 中的工作流版本控制支持两种互补的策略:
- 命名工作流版本:在不同名称下注册工作流的多个版本,允许新的工作流实例运行最新版本,而现有实例继续针对其原始版本进行重放。这提供了工作流实现之间的清晰分隔,非常适合重大重构。
- 修补:对于较小的增量更改,修补允许您使用
ctx.IsPatched("patch_name")在工作流内引入条件代码分支。新的执行采用更新的代码路径,而重放的实例则遵循其启动时的原始路径。这避免了因小调整而复制整个工作流定义。
Go、Python、.NET 和 Java 的 SDK 支持已可用。在工作流版本控制文档中了解更多信息。
工作流状态保留策略
Dapr 工作流现在支持历史记录保留策略,以帮助控制保留在状态存储中的工作流状态历史记录数量。
默认情况下,工作流执行历史记录无限期保留,这对于审计和故障排除非常有用——但对于高容量工作负载或产生大量状态更改的工作流,也可能导致 Actor 状态存储显著增长。
使用 v1.17,您可以配置工作流达到终止状态(Completed、Failed 或 Terminated)后保留历史记录的时间。您可以设置:
- 任何终止状态的默认保留时间,以及
- 针对每个终止状态的覆盖设置(例如,
Failed的保留时间比Completed长)。
保留时间使用 Go 时间字符串(例如 72h、30m)。
配置示例:
kind: Configuration
metadata:
name: appconfig
spec:
workflow:
stateRetentionPolicy:
anyTerminal: "360h"
completed: "1m"
failed: "720h"
terminated: "360h"
操作提示:一个常见的模式是将 Completed 工作流保留较短时间,而将 Failed 和 Terminated 工作流保留较长时间以支持调查。
Placement 服务改进
在 v1.17 中,Placement 服务在部署、扩容事件和 sidecar 变化期间更加稳健,有助于 Actor 和工作流更快收敛并避免不一致的路由决策。
- Placement 现在使用更严格的三阶段序列(锁定 → 更新 → 解锁)在命名空间成员之间传播 placement 表更新。这消除了某些 sidecar 可能临时使用过时 placement 数据的场景,尤其是在多个实例同时加入/离开时。
- 在变化下更可靠的传播:更好地处理快速连接/断开事件有助于防止停滞,并在滚动更新和自动扩缩期间改善收敛。
- 更快的断开检测:当客户端丢弃其流/连接时,Placement 立即做出反应,减少了“幽灵成员”行为并缩短了恢复时间。
CLI 操作改进
v1.17 中的 Dapr CLI 为工作流和调度器添加了更顺畅的操作流程,并为本地开发提供了更好的默认设置。
- 更好的独立模式默认设置用于远程 Actor/工作流:
dapr run现在在未设置时自动设置DAPR_HOST_IP=127.0.0.1,改善了 MacOS 上自托管模式的“开箱即用”行为。 - 新的 dapr 工作流管理命令:从 CLI 运行和管理工作流实例,包括常见的生命周期和故障排除操作(例如:
list、history、suspend/resume、terminate、rerun、raise-event、purge)。
$ dapr workflow <..>
- 新的 dapr 调度器管理命令:检查和维护调度器条目,包括列出和删除作业/提醒,以及导出/导入以在环境之间移动调度器数据。
$ dapr scheduler <..>
- 减少工作流操作所需的标志:工作流列表现在开箱即用,无需 CLI 直接连接到状态存储数据库;对于较旧的运行时目标,
--connection-string选项仍然可用。 - 更清晰的操作清理:工作流清除操作现在支持在 worker 未连接时强制清理,并旨在避免留下相关的计划工作。
性能改进
Dapr v1.17 更多地使用了性能测试套件,并添加了可视化功能,以便您可以自行检查和比较性能结果。
在 tests/perf/report/charts 下添加了一个性能图表目录。它包含由我们的性能运行生成的图表输出(例如:持续时间细分、吞吐量、尾部延迟、资源使用等),按 API 和 Dapr 版本组织。从那里,您可以打开与您使用情况匹配的 API 和 Dapr 版本,并比较与您的 API 和工作负载相关的运行或版本。v1.17 文件夹中的每个 API 文件夹都包含一个亮点部分,其中常见场景的性能结果在每个 README 的顶部突出显示。
性能套件在 CI 中定期运行。可视化图表从代码中创建,基于在 Azure 中的运行。这有助于直观地突出显示回归或改进,并提供一个查看当前和历史性能的统一位置。
请注意,数字在不同运行和环境中可能略有不同。以下数字来自两次单独性能运行(一次 v1.16,一次 v1.17)的比较——不是多次运行的平均值,因此可能无法代表每个环境。以下是我们生成的 v1.16 和 v1.17 运行的亮点:
| API | v1.16 | v1.17 | 改进百分比 |
|---|---|---|---|
| Actor(激活平均延迟) | 2.70 ms | 2.35 ms | 13% |
| Actor(带状态的计时器平均延迟) | 8.20 ms | 6.84 ms | 17% |
| 工作流(吞吐量:迭代次数/秒) | 19.80 | 28.01 | 41.5% |
| 工作流(请求持续时间平均值,毫秒) | 1467 | 1042 | 29% |
| 工作流(请求持续时间 p90,毫秒) | 1642 | 1166 | 29% |
上述数字的测试参考:
- Actors:
TestActorActivate - 工作流:
TestWorkflowWithConstantVUs(相同场景:30 VU,300秒)
Actor 显示出激活和带状态的计时器延迟更低。因为工作流在底层使用 Actor,您可以看到在恒定 VU 场景下更高的工作流吞吐量和更低的请求延迟(平均和 p90)。
链接:
批量发布/订阅 API 现已稳定
在通过 Alpha API 多个版本的可用性之后(首次在 Dapr v1.10.0 中引入),批量发布和批量订阅在 Dapr v1.17 中现已稳定。
稳定化带来了生产就绪、一致的批量发布/订阅 API,允许您通过稳定的 API 在单个操作中发布和接收多条消息:
- 发布端点:对于 HTTP,
/v1.0/publish/bulk/<pubsub-name>/<topic>从/v1.0-alpha1/publish/bulk/<pubsub-name>/<topic>升级而来。对于 gRPC,BulkPublishEvent从BulkPublishEventAlpha1升级而来。 - 应用回调:
OnBulkTopicEvent从OnBulkTopicEventAlpha1升级而来。
使用批量发布/订阅时,应更新应用代码以实现稳定的端点/回调。所有 SDK 都已相应更新以支持和使用发布和订阅两侧的稳定 API。请查看 SDK 发布说明和示例了解详情。
向后兼容性:如果您的应用仍实现先前的 OnBulkTopicEventAlpha1 回调,Dapr 会记录弃用警告并自动回退到 Alpha API(目前),给您时间迁移到使用稳定的 API。Alpha 路径仍然可用,但已被弃用,建议使用稳定的 API。
此次稳定化遵循Dapr API 生命周期期望,并通过广泛的测试确保生产就绪。
链接:
工作流追踪
此版本改进了 Dapr 工作流的端到端追踪,确保在调度和执行工作流时保留传入的追踪上下文。
以前,当工作流被调度或编排执行时,追踪可能会断开,使得分布式追踪更难跟踪。现在工作流 span 正确链接到调用者的追踪。
对话 API 改进
对话 API 在此版本中得到了多项增强,以提高可靠性、灵活性和可观察性。
- 工具/函数调用现在在所有组件中得到完全支持和测试,并针对 Ollama 进行了额外改进。
- 引入了提示缓存以提高效率——补充了具有可配置 TTL 支持的现有响应缓存。
- 现在可以通过弹性策略配置超时,新的响应格式选项使下游消费者更容易处理输出。
- 响应还包括扩展元数据,例如使用指标和模型详细信息,从而实现对 AI 驱动应用程序的改进的可观察性和成本跟踪。
组件改进
此版本包含多项组件改进,重点是增强的身份验证、弹性和功能完整性:
- Apache Pulsar 发布/订阅:通过元数据添加新的订阅选项、消息压缩支持以及从文件路径获取 OAuth2 客户端密钥
- AWS 组件 + MySQL 更新到最新的客户端 SDK 版本,保证兼容性
- SQLServer 状态存储组件 v2 支持工作流
- SFTP 绑定改进了对互斥锁保护操作的并发处理
- Redis Streams 发布/订阅遵循已配置的弹性策略
- Kafka 组件:
- 为 Kafka OIDC 场景引入了额外的 JWT 身份验证支持
- JWT audience 现在作为单个字符串发送,以提高 IdP 兼容性
- JWT 中可选的 kid 头支持
- Azure Service Bus 现在遵循 FIFO 顺序保证
- PostgreSQL v2 修正了迁移模式问题
- 所有状态存储组件支持新的 KeysLike API,支持使用 SQL LIKE 风格的通配符模式列出密钥
- 对话组件新功能:
- 添加了工具调用支持 (Ollama)
- 引入了提示缓存
- 响应格式支持
- 遵循弹性策略超时
- 扩展响应元数据以包含使用指标 + 使用的模型
此版本中的新组件
SDK 改进
Go SDK
- 添加了对 Actor 提醒
FailurePolicy的支持,以控制失败的 Actor 提醒调用的重试行为。 - 公开了 V1 BulkPublish API,作为默认值替代 Beta。
- 移除了工作流包装客户端,转而使用上游的 durabletask-go 客户端。
.NET SDK
Dapr .NET SDK 的 v1.17 版本彻底重写了 Dapr.Workflow 包,移除了所有对 DurableTask 的依赖,并更新以支持所有 Dapr 运行时功能:任务执行标识符、多应用工作流(工作流与活动)以及基于补丁和命名的工作流版本控制。
此版本除了已支持的 .NET 8 和 9 之外,还包括对 .NET 10 的官方支持。
对话 API 已更新,以反映最新的运行时功能,用于详细说明令牌使用情况以及指定响应模式结构和提示缓存持续时间。
发布/订阅 API 已更新,以反映批量发布/订阅运行时支持升级至稳定状态。
最后,此版本通过 Dapr.Testcontainers 包提供 Testcontainers 支持,便于在 SDK 中进行集成测试,并更好地支持开发者使用 Dapr 改进其自己的测试基础设施。
Python SDK
Dapr Python SDK 的 v1.17 版本引入了两个新的 AI 代理框架扩展:dapr-ext-langgraph 和 dapr-ext-strands,启用由 Dapr 构建块支持的持久且可观察的 AI 代理工作流。
现在支持基于补丁和命名的工作流版本控制,允许在不中断进行中的实例的情况下安全演进长时间运行的工作流定义。
@sicoyle 现在是维护者,@CasperGN 是 Python SDK 的批准者。
Java SDK
现在支持基于补丁和命名的工作流版本控制,允许在不中断进行中的实例的情况下安全演进长时间运行的工作流定义。
引入了对 Spring Boot 4 的支持,因为 Spring Boot 3 将于 2026 年 6 月 30 日结束支持。
对话 API 已更新,以反映最新的运行时功能,用于详细说明令牌使用情况以及指定响应模式结构和提示缓存持续时间。
发布/订阅 API 已更新,以反映批量发布/订阅运行时支持升级至稳定状态。
Actor 提醒 API 已更新以支持失败策略
此版本中解决的问题列表
Dapr 运行时
- 已添加 [EPIC] 使批量发布/订阅 API 稳定 5567
- 已添加 作业 API 指标 8160, 8196, 9256
- 已添加 向 gRPC API 添加 GetActorReminder 8632
- 已添加 服务调用流式请求 8685
- 已添加 为 Dapr Agents v1.0 向对话 API 添加功能 8784
- 已修复 修复 OpenTelemetry 资源检测以尊重 OTEL_* 环境变量 9006
- 已修复 调度器未明确处理工作流状态被删除的场景 9018
- 已添加 添加对二进制 cloudevent 的支持 9050
- 已添加 添加配置以禁用初始化端点 9077
- 已修复 Actor 初始化时序等待应用通道就绪 9079
- 已添加 添加 CloudEvent Subject 字段 9101
- 已维护 同步 release-1.16 到 master 9112, 9114
- 已修复 修复 disseminate 锁的使用并修复缺失的 MemberRemove 命令 9115
- 已修复 修复高变化事件期间的 Placement 传播 9117
- 已修复 删除状态存储提醒 9121
- 已修复 修复 Placement 客户端双重锁 9122
- 已修复 高调度器数据集阻塞 Placement 传播 9126
- 已添加 添加 ConnectRPC 生成文件 9130
- 已修复 修复 Actor 停用期间的恐慌 9133
- 已修复 当调度器被禁用时,注入器不再需要调度器 StatefulSet;Helm 图表现在完全移除调度器资源而不是缩容到零 9138, 9175
- 已添加 在 gRPC 元数据中传播 APP_API_TOKEN 用于订阅、绑定和作业 9142
- 已添加 添加端到端 SSE 支持 9149
- 已修复 修复非优雅网络中断期间的调度器连接 9154
- 已修复 防止工作流状态损坏或被破坏时出现无限循环 9157
- 已维护 更新 Go 1.24.6 到 1.24.9 9159
- 已添加 [提案] 工作流版本控制 9162
- 已添加 [提案] 工作流工具支持 9164, 9190
- 已添加 [提案] PlacementV2 9165
- 已添加 在图表值中支持 topologySpreadConstraints/亲和性 9168, 9169
- 已添加 实现 durabletask
ListInstanceIDs和GetInstanceHistory9170 - 已修复 工作流:工作流清除时删除相关提醒 9171
- 已修复 确保 dapr-scheduler 的 TLS 主机名与信任域匹配 9173
- 已添加 工作流:清除强制执行 9176
- 已修复 工作流:将提醒调度到第一个历史记录 9179
- 已添加 工作流:状态保留策略 9185
- 已维护 恢复 Windows 运行器 actions/setup-go 9186
- 已添加 工作流:调度追踪 9193
- 性能优化 使用 bookworm 基础镜像 9194
- 已维护 将 kit go.mod 更改为原始 HEAD 9195
- 安全更新 升级 x/(net/sync/crypto) 并固定 dvsekhvalnov/jose2go 9197
- 已添加 Actor:提醒获取与覆盖 9199
- 重构 Proto:将运行时
dapr.proto重构为多个文件 9200 - 已添加 Actor 提醒/作业:删除前缀与列表 9201
- 已添加 Actors:提醒失败策略 9202
- 已添加 工作流:添加重新运行父实例 ID 9203
- 已添加 调度器:命名空间循环 9205
- 已维护 更新 dapr/components-contrib 到最新 HEAD 9208
- 已添加 工作流版本控制(补丁) 9163, 9217
- 已修复 工作流:GetInstanceHistory 在实例未找到时恐慌 9218
- 已修复 当没有待处理任务完成时的工作流日志循环 9219
- 性能优化 调度器:工作池 9221, 9238
- 安全更新 修复 Go 漏洞 9224, 9250
- 测试 性能测试对齐 k8s 版本 9225
- 已修复 所有前缀匹配的已删除作业也删除了命名空间 9231
- 已添加 启用 sqlserver v2 并支持工作流 9233
- 已添加 工作流:从子工作流创建重新运行 9240
- 已添加 对话 API:添加响应格式、模型、提示缓存、使用指标 9241, 9265, 9316
- 已维护 更新 github.com/dapr/go-etcd-cron 到 head 9242
- 已添加 从预览功能中移除 SchedulerReminders 9244
- 已维护 使用 dependabot 添加依赖扫描 9248
- 文档 修复文档中的拼写错误 9255
- 已维护 make gen-proto 9259
- 已修复 Dapr sidecar 注入器:仅在应用补丁时记录日志/指标 9267, 9268
- 安全更新 更新 UID 检查以仅检查 root 9272
- 已维护 同步 release 1.16 分支到 master 9273
- 已添加 BulkPublishEvent 稳定化 9274, 9306
- 已添加 添加对自定义 Dapr 服务注解的支持 9276, 9307
- 已修复 修复 HTTPEndpoint ClientTLS 仅解析根 CA 9280, 9287
- 已添加 完整的工作流版本控制 9282, 9291, 9292
- 已维护 将 components-contrib 升级到最新 main 9284
- 测试 集成测试:修复重新运行子异步测试 9285, 9286
- 已修复 修复 Proto 文件 java outer classname 9288
- 已添加 向发布原始负载事件添加追踪 9289, 9294, 9310
- 测试 减少测试不稳定 9293
- 已修复 工作流:停滞时清除缓存 9297, 9298
- 安全更新 Placement 授权 Dapr Actor 类型 9299, 9300
- 已维护 ci: 添加仓库分发到版本偏差 9303
- 测试 集成测试:修复测试 9305
- 已维护 durabletask-go: 更新 go.mod ref 到 main HEAD 9312
- 已修复 在 DeleteByActorID 上丢弃未实现错误 9313, 9314
- 已添加 OnBulkTopicEventAlpha1 稳定化 9317, 9319
- 测试 修复 IT 和 e2e 测试不稳定 9318, 9320
- 已添加 使用 Kube 集群域作为调度器 DNS 9322, 9323
- 已维护 禁用 kitex 9324, 9325
- 测试 测试修复:确保工作流 worker 已连接 9326
- 已修复 Placement 客户端:关闭时强制关闭发送 9328, 9329
- 测试 订阅:弹性集成测试 9330, 9331
- 已修复 Rabbitmq 恐慌修复 9334, 9337
- 已维护 樱桃采摘禁用初始化端点和 daprd 作业指标到 1.17 9335
- 已修复 修复 HTTP 路径匹配基数泄漏并支持调用自动注册 9336, 9380
- 已添加 向 API 响应添加工作流失败堆栈跟踪 9339, 9340
- 已修复 fix(ollama): 升级 contrib 版本以修复 ollama 工具调用 9345
- 已修复 修正流式订阅集成测试失败 9346
- 测试 修复单元测试失败 9350, 9351
- 已修复 允许内部工作流事件 9353, 9354
- 已修复 修复:在 SSE 中从响应复制头部 9355, 9376
- 安全更新 升级 golang.org/x/crypto 9362
- 安全更新 升级 github.com/docker/docker 9363
- 已维护 更新 Go 到 1.24.12 9367, 9368, 9369
- 安全更新 高安全性修复 9375
- 重构 Placement: 客户端重构 9377, 9382
- 已修复 改进 ErrActorNoAddress 的输出消息 9378
- 测试 集成测试:重启后最终触发事件 9383, 9384
- 已修复 200: DROP 和 404 之间的一致性行为 9401, 9421
- 已修复 Sentry 日志行修复 9403, 9404
- 重构 Placement 服务器重构 9405, 9439
- 性能优化 性能微调 9407
- 已添加 支持旧版调度器环境变量 9408, 9409
- 已维护 升级 go.opentelemetry.io/otel/sdk 到 v1.40.0 9410, 9430
- 安全更新 升级 github.com/coreos/go-oidc/v3 9414
- 已维护 升级 actions/setup-go 从 4 到 6 9416
- 测试 集成测试:等待 Placement 领导权 9424, 9425
- 已维护 升级 Go 到 1.25.7 9426, 9427
- 已维护 升级 Go 到 1.24.13 9428, 9429
- 测试 单元测试:修复不稳定 9431, 9432
- 已维护 升级 go.etcd.io/etcd/client/pkg/v3 9433
- 已修复 更新 contrib 以包含 redis streams 遵循弹性策略 9437, 9438
- 已添加 替换基于轮询的工作流完成检查 9440
- 已修复 Operator: 客户端连接时检查已关闭 9441, 9442
- 已维护 Dependabot: 仅 PR 安全更新 9443
- 测试 更安静的 amenderror 测试 9444, 9445
- 已修复 调度器:打印不正确的 DNS 名称 9446, 9447
- 重构 Proto: 从运行时移除 placement 导入引用 9448, 9449
- 已维护 移除多余制表符 9455
- 已添加 功能门:WorkflowsRemoteActivityReminder 9457
- 已维护 github.com/diagridio/go-etcd-cron v1.12.1 9458, 9459
- 测试 版本偏差:包含调度器集成测试路径 9460
- 已修复 修复热重载订阅竞争 9461, 9462
- 已添加 V2.0.0 9463
- 已修复 指标路径匹配修复 9464
- 已维护 添加回溯操作 9465
- 测试 修复发布/订阅 e2e 不稳定 9466
- 测试 修复 actor 工作流性能不稳定 9467
- 已维护 更新 contrib 到 main HEAD 9468, 9469
- 已修复 配置 CRD OtelSpec 缺少 Headers、Timeout 和 secret 引用支持 9524
Dapr CLI
- 已添加 多应用运行不理解依赖和顺序 - 导致时序问题 1435
- 已维护 更新 k8s 和 kind 版本 1546
- 已维护 合并 1.16 master 1557
- 已添加 添加
dapr scheduler命令 1559 - 已添加 工作流命令支持 1560
- 已修复 修复工作流资源路径查找 1564
- 已修复 工作流:不再需要数据库连接字符串 1570
- 已维护 ci: 添加创建发布工作流 1573
- 已添加 调度器:添加短帮助输出 1576, 1577
- 已添加 添加对工作流版本控制新类型的支持 1578, 1579
- 已维护 升级 go 到 1.24.13 以及 containerd 和 helm 1583, 1586
- 安全更新 升级 helm 和 opentelemetry 以修复高漏洞 1587, 1588
- 已修复 环境:设置 DAPR_HOST_IP=127.0.0.1 1589, 1590
组件
- 已添加 所有组件已升级到使用 AWS SDK GO V2,V1 SDK 已从依赖项中移除。 4231
- 已添加 新组件 - state.ravendb 3318
- 已添加 将 AWS Secrets Manager 升级到 AWS SDK v2 3901
- 已添加 将 paramstore 升级到 AWS SDK v2 3908
- 已添加 将 Bedrock 升级到 AWS SDK v2 3909
- 已添加 将 SES 绑定升级到 AWS SDK v2 3911
- 已添加 新 v2 sqlserver 状态组件,支持工作流 4027
- 已修复 修复 pubsub.kafka Avro 消息发布回归 4028
- 已维护 清理 daprbot 4033
- 已修复 写入后关闭文件 4034
- 已修复 修复 Kafka AWS 身份验证配置错误 4043
- 已修复 修复 aws secrets manager yaml 4044
- 已修复 重用 kafka 客户端 4049
- 已添加 支持 kafka OIDC 的客户端 JWT 身份验证方法 4057
- 已维护 ci: 向 gh 工作流添加 ravendb 密钥 4058
- 已修复 SFTP 绑定因连接过多导致 SFTP 服务器过载;处理重连 4061, 4075
- 测试 启用 dynamodb 状态存储测试 4069
- 已修复 修复 goavro 由于编解码器状态变更导致的错误 4070, 4071
- 已添加 支持 SFTP 绑定传输数据的 base64 解码 4072
- 已修复 修复 SFTP 与企业/Axway MFT 服务器的连接中毒 4078
- 已修复 修复 pulsar oauth2 的令牌续订 4079
- 已添加 状态存储:KeysLike 4087
- 已添加 ASB 并发会话 FIFO 4092
- 已添加 向 kafka JWT 身份验证添加
kid头 4099 - 已修复 postgres v2: 修复迁移列名 4100
- 已修复 在 JWT 中将 audience 作为单个字符串发送 4111
- 安全更新 修复关键 NATS 漏洞 4114
- 已修复 修复 pulsar 密钥文件路径 4116
- 已维护 为 git actions 和 gomod 使用 dependabot 添加依赖扫描 4118
- 已添加 向对话 API 添加响应格式和超时 4129
- 已维护 dependabot modtidy 和工作流改进 4131, 4146, 4152, 4155, 4182
- 已添加 增强 Pulsar pub/sub 以启用消息压缩 4148
- 已添加 feat(conversation): 添加提示缓存和使用指标 4154
- 已维护 升级 cloudwego/kitex 到 v0.15.4 4158
- 已添加 在发布/订阅中传播消息元数据 4160, 4171
- 已修复 修复使用 oauth2ClientSecretPath 时的 Pulsar pubsub 初始化 4161
- 已添加 将 SNS 绑定升级到 AWS SDK v2 4169
- 已添加 将 SQS 绑定升级到 AWS SDK v2 4170
- 已添加 将 DynamoDB 绑定升级到 AWS SDK v2 4172
- 已添加 将 Kinesis 绑定升级到 AWS SDK v2 4173
- 测试 修复 MySQL 认证测试失败检查 4180, 4185
- 已添加 更新 postgres 配置 AWS 身份验证以使用新的凭证提供者 4181
- 安全更新 修复 cloudflare worker 高漏洞 4184
- 已修复 修复 RabbitMQ 中的竞争条件 4190
- 已修复 移除内存发布/订阅重试 4191
- 已修复 fix(ollama): 使用 openai 客户端以支持工具调用 4192
- 已维护 升级 cloudflare worker 依赖 (wrangler, jose, esbuild) 4199, 4200, 4201
- 已修复 修复 MySQL 回归 4202
- 测试 添加 MySQL 认证测试 4204
- 已维护 更新 main 和测试依赖项 4205
- 已修复 使 Redis Streams PubSub 遵循弹性策略 4208
- 已添加 feat: 严格的 SFTP 操作 4211
- 已维护 SFTP 绑定:检查错误消息 4214
- 已维护 确保所有组件正确注册 4215
- 已修复 fix(nr): 更新 AWS 身份验证支持以匹配文档 4216
- 已修复 fix(pulsar): 更新订阅选项以使用元数据值 4218
.NET SDK
通用
- 已添加 支持 .NET 10 1676
- 已添加 NuGet 受信任发布 - OIDC 支持 1651
- 已更新 修复拼写错误并改进代码一致性 1659
- 已更新 促进 GitHub 分支合并规则在构建步骤中的更改 1668
- 已更新 扩展输出绑定调用文档 1652
- 已更新 修复 dotnet-messaging 文档中的 markdown 链接语法 1654
- 已更新 将文档从 SDK 存储库迁移到 dapr/docs 1655
示例
- 已添加 添加工作流版本控制(补丁 + 命名)示例 1706
- 已添加 演示如何对工作流/活动进行单元测试的示例 1708
- 已更新 更新到 Aspire 13.x 1661
- 已移除 废弃的服务调用示例 1698
Actors
- 已修复 UseJsonSerialization 设置在启动时正确应用 1648
对话
- 已更新 支持最新 API 更新 1696
发布/订阅
服务调用
- 已更新 按最佳实践将服务调用方法标记为 [Obsolete] 1698
工作流
- 已添加 在 .NET 中支持多应用工作流 1675
- 已添加 添加指示已建立 gRPC 工作流流的日志消息 1688
- 已添加 添加工作流基于补丁的版本控制支持 1687
- 已添加 添加工作流基于命名的版本控制支持 1700
- 已添加 添加内置工作流版本控制策略 1707, 1710
- 已添加 添加对命名版本控制的自动工作流注册跨引用项目的支持 1711
- 已更新 Dapr.Workflow 的清洁实现 1662
- 已更新 使其对加载顺序差异 (dapr/app) 和工作流重连具有弹性 1680
- 已修复 修复工作流执行不确定性 1667
- 已修复 修复工作流 gRPC 流被阻塞 1671
- 已修复 修复工作流执行顺序 1684
- 已修复 修复活动跟踪失败 1692
- 已修复 确保 TFMs 在
Dapr.Workflow.Versioning包中填充 1709
测试
- 已添加 为 .NET 添加 Testcontainer 支持 1664
- 已添加 为 Dapr.Workflow 添加集成测试 1669
- 已添加 为 Dapr.Jobs 添加集成测试 1674
- 已添加 为 Dapr.DistributedLock 添加集成测试 1682
- 已添加 添加启用容器日志捕获到文件的机制 1701
- 已更新 改进的 GitHub 构建操作以更好地执行集成和单元测试 1693
- 已更新 在矩阵中添加自动的最后 X 个 RC 运行时版本测试 1701
- 已更新 改进 Dapr.Testcontainers 中的 Dapr 就绪性检查 1705
- 已修复 修复 WorkflowState 测试中依赖时区的 ArgumentOutOfRangeException 1690
特别感谢以下 .NET SDK 贡献者,使此版本成为可能:@whitwaldo, @zglp, @sunnynagavo, @atrauzzi, @marcduiker, @daanschutte, @ali-Hamza817, @ZeBobo5
Java SDK
- 已修复 文档与实现之间在 Actor 计时器和提醒行为不一致 681
- 已添加 功能预览:添加 Actor 状态 TTL 支持 849
- 已添加 向 Java SDK 添加密码学 API 1073, 1599
- 已添加 为 Dapr 服务调用添加 OpenFeign 客户端 1181, 1294
- 已添加 Spring Boot Cloud Config 集成 1225, 1230
- 已维护 自动化同步 dapr/durabletask-java 1397
- 已添加 向重试上下文添加 taskName 和 input 1423
- 已添加 durabletask-java 和 durabletask-go 的追踪传播 1485
- 已添加 添加 Dapr Testcontainers 订阅范围 1491
- 已添加 支持 Java SDK 的原生编译 1509
- 已维护 移除阴影依赖项 1543
- 文档 向 README 添加架构图 1549
- 重构 使 Java API 与工作流命名约定对齐 1554, 1560
- 已维护 为 3.5.x 和 3.4.x 更新 Spring Boot 矩阵 1558
- 已添加 启动另一个容器之前检查 Dapr 运行时容器 1562
- 已维护 集中 Maven 依赖版本管理 1564
- 已添加 为 DaprClient 设置默认属性 1567
- 已修复 在 saveState 中传递元数据 1569, 1570
- 已修复 修复多应用构建的依赖项 1572
- 已维护 将 openjdk:17-jdk-slim 替换为 eclipse-temurin:17-jdk-jammy 1574
- 已添加 将 Durable Task Java 作为 Maven 模块引入 Java SDK 1575
- 已添加 提供 @Component 值时使用其注册活动 1577
- 已添加 向 Dapr testcontainer 添加 withAppProtocol 和 gRPC 支持 1578, 1586
- 文档 添加带 Outbox 模式的 statestore 示例 1582
- 已添加 添加对 HttpPipeline 的支持 1585
- 已维护 升级 actions/upload-artifact 1587, 1606
- 已维护 使用依赖项 BOM 并移除重复项 1588
- 文档 应用 API 令牌身份验证(gRPC 和 HTTP)的示例和文档 1589
- 已添加 向 DaprWorkflowClient 添加 micrometer 追踪 1592
- 已维护 移除 SDK 文档(已迁移到主文档存储库) 1593
- 已维护 升级 actions/checkout 从 5 到 6 1595
- 已维护 Maven 版本、属性和插件改进 1596
- 已添加 添加基于 Flux 的 subscribeToEvents 方法 1598
- 已添加 测试容器的初始工作流仪表板配置 1601
- 已添加 将 Jobs API 提升到 DaprClient 1602
- 测试 修复不稳定的 DaprPubSubOutboxIT 测试 1605
- 已维护 升级 codecov/codecov-action 1607
- 已添加 添加对流式订阅中的死信主题的支持 1608, 1615
- 已添加 创建 Dapr WaitStrategy 以改进集成测试人体工程学 1609
- 已添加 向集成测试添加 DaprSpringBootTest 和 DaprSidecarContainer 注解 1610
- 已维护 升级 Protobuf 到 4.x.x 1611
- 已添加 在 CloudEvent 订阅旁边添加原始事件订阅 1617
- 已维护 将 DurableTask 客户端带到 Maven 标准 1618
- 已添加 feat: 传播追踪信息 1619
- 已维护 更新 dapr 版本到 1.17.0 1620, 1651
- 已添加 向 HttpMethods 枚举和 HttpExtension 添加 PATCH 用于服务调用 1623, 1644
- 已添加 feat: 添加工作流版本控制 1624
- 已维护 升级 org.assertj:assertj-core 1627
- 已添加 向 Java SDK 添加命名计时器 1628
- 已添加 允许注册自定义 TaskOrchestrationFactory 和 TaskActivityFactory 1629, 1630
- 已添加 引入 closeNow() 以实现即时关闭 1632
- 已维护 移除不必要的变量;用 DaprWait 策略替换基于日志的等待 1634, 1635
- 已维护 樱桃采摘 master 到 1.17 分支 1637
- 已添加 向对话 API 添加新字段 1639, 1640
- 已添加 使批量发布/订阅稳定 1641
- 已添加 feat: 向 Actor 提醒添加失败策略 1643
- 已添加 使用 DefaultObjectSerializer 支持 Spring Boot 4.x 的 Jackson3 1647
Python SDK
- 已维护 升级 actions/setup-python 从 5 到 6 830
- 已修复 异步等待 Dapr 健康检查以避免阻塞 gRPC 流关闭 839
- 已维护 延长密钥生成时间 845
- 已维护 将 release-1.16 分支更改合并到 main 851
- 已维护 Lint 更新 854
- 已维护 移除 python 3.9 支持 860
- 已添加 异步工作流客户端实现 861
- 已添加 为 LangGraph 添加 Dapr 检查点 862, 868
- 已维护 修复 CI - CLI 版本步骤 863
- 已维护 升级 mypy-protobuf 864, 888
- 已维护 移除 SDK 文档(已迁移到主文档存储库) 866
- 已维护 升级 actions/checkout 从 5 到 6 867
- 已维护 修复 ext 包类型 869
- 已添加 添加 Strands Agent Session Manager 872
- 已维护 更新 grpcio 并重新生成 gRPC 文件 877
- 测试 修复 1.17 版本的元数据测试用例 878
- 文档 修复 subscribe 文档字符串拼写错误 883
- 已维护 为新 ext 标签触发 CI 886
- 已修复 修复工作流客户端缺少 close 函数 889
- 已添加 工作流版本控制 893
- 已修复 在工作流客户端启动期间当 dt reader 流就绪时修复信号 901
- 已添加 feat(convo): 向对话 API 添加新字段 902
- 已维护 升级 fossas/fossa-action 904, 912
- 已维护 升级 durabletask-dapr 905
- 已维护 fix(build): 捕获最新和重新发布的 dapr 运行时和 CLI 906, 913
- 已维护 更新 durabletask 908, 909
- 已维护 更新 mypy_protobuf 910, 914
- 已维护 使用回溯 GitHub 操作 911
文档
- 文档 状态存储:阿里云表格存储缺失 4795
- 文档 文档中缺少 bindings.dubbo 组件 4798
- 文档 OCI 对象存储缺失 4799
- 文档 Twilio 绑定需要添加/编辑 4800
- 文档 阿里云日志存储绑定在表格中缺失 4804
- 文档 RocketMQ 绑定缺失 4806
- 文档 密钥存储 tencentcloud.ssm 缺失 4808
- 文档 华为云在密钥存储表格中缺失 4809
- 文档 为 Pulsar PubSub 消息压缩添加文档 4990
- 文档 记录 Dapr.Workflow .NET SDK 针对 1.17 版本的更改 4991
- 文档 添加了 RavenDB 作为状态存储的文档 4738
- 文档 文档: 添加 openbao.md 4917
- 文档 [1.16] 更新性能测试文档以指向新的真实来源 4961
- 文档 文档: 更新 bedrock 元数据 4980
- 文档 .NET SDK - 更新了关于为 SDK 指定 HTTP 和 gRPC sidecar 端口的指南 4993
- 文档 添加了工作流版本控制文档 5003
- 文档 向 dapr sidecar 服务添加对自定义注解的支持 5005
- 文档 [1.17] 工作流/CLI/提醒文档 5017
- 文档 添加了低级工作流协议文档 5024
- 文档 文档(convo): 添加新字段并更正缓存 5027
- 文档 添加新文档以启用 Pulsar PubSub 消息压缩 5028
- 文档 feat: 介绍 sqlserver 状态存储 v2 5032
- 文档 样式: 更新 agents api 5034
- 文档 功能工作流远程活动提醒 5036
- 文档 功能工作流远程活动提醒 1.17 5039
- 文档 [1.17] 文档 redis 遵循弹性策略 5044
- 文档 文档: 配置 otel headers secretref 5047
- 文档 在文档中添加了 ravendb 5050
快速入门
- 已维护 JS SDK 版本 3.6.1 1265
- 已修复 从快速入门测试中移除 HTTPS 重定向(Dapr SDK 的已知问题) 1268
- 已维护 重命名程序集输出以移除 “App”/“Service” 后缀 1271
- 已维护 更新对话示例以使用 Conversation Alpha 2 1272
- 已维护 升级运行时、CLI 和 SDK 到 RC 1278
升级至 Dapr 1.17
要升级到此版本的 Dapr,请按照以下步骤操作以确保顺利升级。
本地计算机 / 自托管
使用您当前安装的 CLI 卸载 Dapr。请注意,这将删除默认的 $HOME/.dapr 目录、二进制文件以及所有容器 dapr_redis、dapr_placement 和 dapr_zipkin。如果 docker 命令需要 sudo,Linux 用户需要运行 sudo:
dapr uninstall --all
从此处下载最新版本并将 dapr 二进制文件放入您的 PATH。
安装 CLI 后,运行:
dapr init --runtime-version=1.17.0
等待更新完成,确保您使用的是最新版本的 Dapr(1.17):
$ dapr --version
CLI version: 1.17
Runtime version: 1.17
Kubernetes
从先前版本升级
您可以使用 Helm 3 和 Dapr CLI 执行零停机升级。
使用 CLI 升级
从此处下载最新版本并将 dapr 二进制文件放入您的 PATH。
要升级 Dapr,运行:
dapr upgrade --runtime-version 1.17.0 -k
要使用高可用模式升级:
dapr upgrade --runtime-version 1.17.0 --enable-ha=true -k
等待操作完成,并使用 dapr status -k 检查您的状态。
全部完成!
注意:确保重新启动您的部署以使用最新版本的 Dapr sidecar
使用 Helm 升级
要使用 Helm 升级 Dapr,运行:
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm upgrade dapr dapr/dapr --version 1.17 --namespace=dapr-system --wait
等待操作完成,并使用 dapr status -k 检查您的状态。
全部完成!
注意:确保重新启动您的部署以使用最新版本的 Dapr sidecar
在集群上开始全新安装
请参阅如何在 Kubernetes 集群上部署 Dapr,了解在 Kubernetes 上安装 Dapr 的完整指南。
您可以使用 Helm 3 安装 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.17 --namespace=dapr-system --wait
或者,您可以使用最新版本的 CLI:
dapr init --runtime-version=1.17.0 -k
安装后
验证控制平面 pod 正在运行且健康:
$ dapr status -k
NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED
dapr-sidecar-injector dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
dapr-sentry dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
dapr-operator dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
dapr-placement dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
安装 Dapr 1.17 后,对您的部署执行滚动重启以获取最新版本的 sidecar。这可以通过以下方式完成:
kubectl rollout restart deploy/<deployment-name>
破坏性变更
无。
弃用通知
Alpha 批量发布/订阅 API 正在被稳定的批量发布/订阅 API 弃用。Alpha 批量发布和批量订阅 API(/v1.0-alpha1/publish/bulk/<pubsub-name>/<topic> 和 BulkPublishEventAlpha1)现已弃用。应用回调 OnBulkTopicEventAlpha1 也现已弃用。
Alpha API 在 Dapr v1.17 中仍然可用——如果您的应用仍然使用它们,Dapr 将记录弃用警告并自动回退。这为用户迁移到稳定的 API(/v1.0/publish/bulk/<pubsub-name>/<topic> 和 BulkPublishEvent)以及应用回调 OnBulkTopicEvent 提供了时间。
有关已升级的 API、迁移步骤、向后兼容性行为和文档链接的完整详细信息,请参阅标题为 批量发布/订阅 API 现已稳定 的部分。
更新内容 (原始)
Dapr 1.17
We’re excited to announce the release of Dapr 1.17! This release introduces workflow versioning, giving you the tools to safely evolve long-running workflow code without breaking in-flight instances. Combined with new state retention policies, up to 41% higher workflow throughput, and end-to-end tracing, Dapr Workflows are now ready for the most demanding production workloads. This release also stabilizes the Bulk PubSub API, improves Placement service resilience, and adds new CLI commands for managing Workflows and Scheduler.
Thanks to all the new and existing contributors who helped make this release happen.
If you’re new to Dapr, visit the getting started page and familiarize yourself with Dapr.
The 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 and the Developing applications.
Go to the upgrading Dapr section for steps to upgrade to version 1.17.
Acknowledgements
Thanks to everyone who made this release possible!
@acroca, @adam6878, @AdarshRavichandran, @addjuarez, @aharonYK, @akotsarelation, @alekhrycaiko, @alicejgibbons, @ankurinfoblox, @antontroshin, @artur-ciocanu, @artursouza, @atrauzzi, @BlackRider97, @by-nelson, @CasperGN, @cicoyle, @citymaus, @ConstantinChirila, @cr3ativ3cod3r, @daanschutte, @DeepanshuA, @Eileen-Yu, @elena-kolevska, @famarting, @FarmerChillax, @filintod, @Flern, @fyzanshaik, @fyzanshaik-atlan, @halspang, @HusseinYasser, @imneov, @ItalyPaleAle, @javier-aliaga, @JeffreyJPZ, @jjcollinge, @jmfloreszazo, @johansja, @joshm998, @JoshVanL, @jslatten, @kapilthareja, @kaspernissen, @kayaj1009, @kgal-akl, @lijujoseph4, @lindner, @lony2003, @lrascao, @majiayu000, @marcduiker, @MasayaAoyama, @mcruzdev, @MichaelHindley, @middt, @mikeee, @mohitpalsingh, @msfussell, @MyMirelHub, @nelson-parente, @ngruson, @nikitasarawgi, @nmalocic, @oglok, @olitomlinson, @passuied, @paulorfjesus, @philliphoff, @pravinpushkar, @RaymundoZa, @robertojrojas, @RyanLettieri, @sadath-12, @salaboy, @seal90, @sicoyle, @siri-varma, @SpiffyEight77, @StarJourneyMingsing, @StoopidBoi-6128, @sunnynagavo, @TheForbiddenAi, @titanventura, @tmacam, @tomflenner, @WhitWaldo, @wlfgang, @yaron2, @ytimocin, @ZeBobo5, @ZeynelKoca, @zglp
Highlights
These are the v1.17 release highlights:
Workflow Versioning
Dapr v1.17 introduces workflow versioning, giving developers the tools to safely evolve workflow code while in-flight workflows continue to run correctly. This is critical because Dapr workflows are durable, may run for extended periods, and application upgrades can introduce changes that break deterministic replay of existing workflow instances. Workflow versioning in Dapr supports two complementary strategies:
- Named workflow versions: Register multiple versions of a workflow under distinct names, allowing new workflow instances to run on the latest version while existing instances continue replaying against their original version. This provides a clean break between workflow implementations, ideal for major refactors.
- Patching: For smaller, incremental changes, patching lets you introduce conditional code branches within a workflow using
ctx.IsPatched("patch_name"). New executions take the updated code path, while replaying instances follow the original path they were started on. This avoids duplicating entire workflow definitions for minor adjustments.
SDK support is already available in Go, Python, .NET, and Java. Learn more in the workflow versioning documentation.
Workflow State Retention Policy
Dapr Workflows now supports a history retention policy to help control how much workflow state history is kept in your state store.
By default, workflow execution history is retained indefinitely, which is great for auditing and troubleshooting—but can also lead to significant growth in actor state storage for high-volume workloads or workflows that emit lots of state changes.
With v1.17 you can configure how long to retain workflow history after a workflow reaches a terminal state (Completed, Failed, or Terminated). You can set:
-
a default retention duration for any terminal state, and
-
per-terminal-state overrides (for example, keep
Failedlonger thanCompleted).
Retention durations use Go duration strings (for example 72h, 30m).
Example configuration:
kind: Configuration
metadata:
name: appconfig
spec:
workflow:
stateRetentionPolicy:
anyTerminal: "360h"
completed: "1m"
failed: "720h"
terminated: "360h"
Operational tip: a common pattern is to keep Completed workflows for a shorter period, while retaining Failed and Terminated workflows longer to support investigation.
Placement Service Improvements
In v1.17, the Placement service is more robust during deployments, scaling events, and sidecar churn, helping Actors and Workflows converge faster and avoid inconsistent routing decisions.
- Placement now disseminates placement-table updates using a stricter three-stage sequence (lock → update → unlock) across members in a namespace. This eliminates scenarios where some sidecars could temporarily operate on stale placement data, especially when many instances are joining/leaving at once.
- More reliable dissemination under churn: Better handling of rapid connect/disconnect events helps prevent stalls and improves convergence during rolling updates and autoscaling.
- Faster disconnect detection: Placement reacts immediately when a client drops its stream/connection, reducing “ghost member” behavior and shortening recovery time.
CLI Operational Improvements
The Dapr CLI in v1.17 adds smoother operational workflows for Workflows and Scheduler, plus better defaults for local development.
- Better standalone defaults for remote Actors/Workflows: dapr run now automatically sets
DAPR_HOST_IP=127.0.0.1when it isn’t already set, improving “works out of the box” behavior in self-hosted mode on MacOS. - New dapr workflow management commands: Run and manage workflow instances from the CLI, including common lifecycle and troubleshooting operations (for example:
list,history,suspend/resume,terminate,rerun,raise-event,purge).
$ dapr workflow <..>
- New dapr scheduler management commands: Inspect and maintain Scheduler entries, including listing and deleting jobs/reminders, plus export/import to move Scheduler data between environments.
$ dapr scheduler <..>
- Fewer required flags for workflow operations: Workflow listing now works out-of-the-box without requiring the CLI to connect directly to the state store database; the –connection-string option remains available for older runtime targets.
- Cleaner operational cleanup: Workflow purge operations now support forcing cleanup when a worker isn’t connected, and are designed to avoid leaving behind related scheduled work.
Performance Improvements
In Dapr v1.17 made greater use of the performance test suite and added visualizations so you can inspect and compare performance results yourself.
Added a performance charts directory under tests/perf/report/charts. It contains chart outputs (ex: duration breakdown, throughput, tail latency, resource usage, etc) generated from our performance runs, organized by API and Dapr version. From there, you can open the API and Dapr version that matches your usage and compare runs or versions relevant to your APIs and workloads. Each API folder for the v1.17 folder contains a highlights section where common scenario performance results are highlighted at the top of each README.
The performance suite runs in CI regularly. Visual charts are created from code, based on runs in Azure. This helps visually highlight regressions or improvements and provides a single place to see current and historical performance.
Keep in mind that numbers can vary slightly between runs and environments. The figures below are from a comparison of two individual performance runs (one v1.16, one v1.17) - not averaged across multiple runs, so they may not be representative of every environment. Below are highlights from our generated v1.16 and v1.17 runs:
| API | v1.16 | v1.17 | % Improvement |
|---|---|---|---|
| Actor (activation avg latency) | 2.70 ms | 2.35 ms | 13% |
| Actor (timer with state avg latency) | 8.20 ms | 6.84 ms | 17% |
| Workflows (throughput: iterations/sec) | 19.80 | 28.01 | 41.5% |
| Workflows (req duration avg in ms) | 1467 | 1042 | 29% |
| Workflows (req duration p90 in ms) | 1642 | 1166 | 29% |
Test references for the numbers above:
- Actors:
TestActorActivate - Workflows:
TestWorkflowWithConstantVUswith the same scenario (30 VUs, 300s)
Actors show lower latency for activation and timer with state. Because workflows use actors under the hood, you see higher workflow throughput and lower request latency (both average and p90) for the constant VU scenario.
Links:
- Performance charts – run your own comparisons and browse charts by API and version
- Performance test suite – run the Dapr performance tests in your own environment
Bulk Pubsub API is now Stable
After several releases of availability via the Alpha APIs, first introduced in Dapr v1.10.0, Bulk Publish and Bulk Subscribe are now stable in Dapr v1.17.
The stabilization brings production-ready, consistent APIs for Bulk PubSub, allowing you to publish and receive multiple messages in a single operation via the stable APIs:
- Publish endpoint: for HTTP,
/v1.0/publish/bulk/<pubsub-name>/<topic>was promoted from/v1.0-alpha1/publish/bulk/<pubsub-name>/<topic>. For gRPC,BulkPublishEventwas promoted fromBulkPublishEventAlpha1. - Application callback:
OnBulkTopicEventwas promoted fromOnBulkTopicEventAlpha1.
Application code should be updated to implement the stable endpoints/callbacks when using Bulk PubSub. All SDKs are updated accordingly to support and use the stable APIs on both Publish and Subscribe sides. Please check SDK release notes and examples for details.
Backwards compatibility: If your application still implements the previous OnBulkTopicEventAlpha1 callback, Dapr logs a deprecation warning and automatically falls back to the Alpha APIs (for now), giving you time to migrate to using the stable API. Alpha paths remain functional, but are deprecated in favor of the stable APIs.
This stabilization follows the Dapr API Lifecycle expectations, backed by extensive testing ensuring production readiness.
Links:
Workflow Tracing
This release improves end-to-end tracing for Dapr Workflows by ensuring that incoming trace context is preserved when scheduling and executing workflows.
Previously, traces could become disconnected when workflows were scheduled or orchestrations executed, making distributed traces harder to follow. Now workflow spans are correctly linked to the caller’s trace.
Conversation API Improvements
The Conversation API received several enhancements in this release to improve reliability, flexibility, and observability.
- Tool/function calling is now fully supported and tested across all components, with additional improvements specific to Ollama.
- Prompt caching has been introduced to improve efficiency—complementing the existing response cache with configurable TTL support.
- Timeouts can now be configured via resiliency policies, and new response formatting options make it easier for downstream consumers to process outputs.
- Responses also include extended metadata, such as usage metrics and model details, enabling improved observability and cost tracking for AI-powered applications.
Component Improvements
Various component improvements were included in this release, focused on enhanced authentication, resiliency, and feature completeness:
- Apache Pulsar PubSub: new subscription options via metadata, message compression support, and OAuth2 client secret support from file path
- AWS Components + MySQL updated to latest client SDK version with compatibility guaranteed
- SQLServer state component v2 with support for workflows
- SFTP Binding improved concurrency handling for mutex-protected operations
- Redis Streams PubSub honors configured resiliency policies
- Kafka Components:
- Introduced additional JWT authentication support for Kafka OIDC scenarios
- JWT audience is now sent as a single string for improved IdP compatibility
- Optional kid header support in JWT
- Azure Service Bus now respects FIFO ordering guarantees
- PostgreSQL v2 corrected migration schema issues
- All State Components support new KeysLike API, enabling key listing using SQL LIKE-style wildcard patterns
- Conversation Components new features:
- Added tool call support (Ollama)
- Introduced prompt caching
- Response formatting support
- Resiliency policy timeout respected
- Extended response metadata to include usage metrics + model used
New Components in this release
SDK Improvements
Go SDK
- Adds support for
FailurePolicyon Actor Reminders to allow for controlling the retry behaviour of failed Actor Reminder invocations. - Exposed the V1 BulkPublish APIs, used as the default over Beta.
- Removes the Workflow wrapper client, in favour of the upstream durabletask-go client.
.NET SDK
The v1.17 release of the Dapr .NET SDK features a complete overhaul of the Dapr.Workflow package removing all dependencies on DurableTask and updating to support all Dapr runtime functionality: task execution identifiers, multi-app workflows (workflows & activities), and both patch- and name-based workflow versioning.
This release includes official support for .NET 10 in addition to the already supported .NET 8 and 9.
The Conversation API has been updated to reflect the latest runtime capabilities for detailing token usage and specifying both response schema structure and prompt cache durations.
The PubSub API has been updated to reflect the graduation of the bulk PubSub runtime support to stable.
Finally, this release ships Testcontainers support via the Dapr.Testcontainers package facilitating integration tests across the SDK and better enabling developers to improve their own testing infrastructure with Dapr.
Python SDK
The v1.17 release of the Dapr Python SDK introduces two new AI agent framework extensions: dapr-ext-langgraph and dapr-ext-strands, enabling durable and observable AI agent workflows backed by Dapr’s building blocks.
Workflow versioning is now supported with both patch-based and name-based versioning, allowing safe evolution of long-running workflow definitions without breaking in-flight instances.
@sicoyle is now a maintainer and @CasperGN an approver of the python SDK.
Java SDK
Workflow versioning is now supported with both patch-based and name-based versioning, allowing safe evolution of long-running workflow definitions without breaking in-flight instances.
Spring Boot 4 support has been introduced, as Spring Boot 3 reaches end of support on June 30, 2026.
The Conversation API has been updated to reflect the latest runtime capabilities for detailing token usage and specifying both response schema structure and prompt cache durations.
PubSub API has been updated to reflect the graduation of the bulk PubSub runtime support to stable.
Actor Reminders API has been updated to support failure policies
List of issues addressed in this release
Dapr Runtime
- ADDED [EPIC] Make Bulk Pubsub APIs stable 5567
- ADDED Jobs API Metrics 8160, 8196, 9256
- ADDED Add GetActorReminder to gRPC API 8632
- ADDED Service Invocation Streaming request 8685
- ADDED Add Features to Conversation API for Dapr Agents v1.0 8784
- FIXED Fix OpenTelemetry resource detection to respect OTEL_* environment variables 9006
- FIXED Scheduler doesn’t explicitly handle scenarios when workflow state is deleted 9018
- ADDED Added support for binary cloudevent 9050
- ADDED Add config to disable init endpoints 9077
- FIXED Actor init timing to wait for app channel readiness 9079
- ADDED Add CloudEvent Subject field 9101
- CHORE Sync release-1.16 to master 9112, 9114
- FIXED Fix usage of disseminate lock and fix missing MemberRemove command 9115
- FIXED Fix placement dissemination during high churn events 9117
- FIXED Delete state store reminders 9121
- FIXED Fix placement client double lock 9122
- FIXED Blocked Placement dissemination with high Scheduler dataset 9126
- ADDED Add ConnectRPC generated files 9130
- FIXED Fix panic during actor deactivation 9133
- FIXED Injector no longer requires scheduler StatefulSet when scheduler is disabled; Helm chart now completely removes scheduler resources instead of scaling to zero 9138, 9175
- ADDED Propagate APP_API_TOKEN in gRPC metadata for subscriptions, bindings, and jobs 9142
- ADDED Add e2e SSE support 9149
- FIXED Fix Scheduler connection during non-graceful network interruptions 9154
- FIXED Prevent infinite loop when workflow state is corrupted or destroyed 9157
- CHORE Update Go 1.24.6 to 1.24.9 9159
- ADDED [PROPOSAL] Workflow Versioning 9162
- ADDED [PROPOSAL] Workflow tooling support 9164, 9190
- ADDED [PROPOSAL] PlacementV2 9165
- ADDED Support topologySpreadConstraints/affinity in chart values 9168, 9169
- ADDED Implements durabletask
ListInstanceIDs&GetInstanceHistory9170 - FIXED Workflow: Delete associated reminders on workflow purge 9171
- FIXED Ensure the TLS hostname of dapr-scheduler matches the trust domain 9173
- ADDED Workflow: Purge Force 9176
- FIXED Workflow: schedule reminders to first history 9179
- ADDED Workflow: State Retention Policy 9185
- CHORE Revert Windows runners actions setup-go 9186
- ADDED Workflow: Schedule Tracing 9193
- PERF Use bookworm base image 9194
- CHORE Change kit go.mod to origin HEAD 9195
- SECURITY Bump x/(net/sync/crypto) and pin dvsekhvalnov/jose2go 9197
- ADDED Actor: Reminder Get & Overwrite 9199
- REFACTOR Proto: refactor runtime
dapr.protointo multiple files 9200 - ADDED Actor Reminder/Jobs: Delete Prefix & List 9201
- ADDED Actors: Reminder Failure Policy 9202
- ADDED Workflow: Adds Rerun parent instance ID 9203
- ADDED Scheduler: Namespaces loop 9205
- CHORE Updates dapr/components-contrib to latest HEAD 9208
- ADDED Workflow versioning (patching) 9163, 9217
- FIXED Workflow: GetInstanceHistory panic when instance not found 9218
- FIXED Workflow logging loop when no pending task completed 9219
- PERF Scheduler: worker pool 9221, 9238
- SECURITY Fix Go vulnerability 9224, 9250
- TEST Perf tests align k8s versions 9225
- FIXED Deleted Jobs in all prefix matching deleted Namespaces 9231
- ADDED Enable sqlserver v2 with support for workflows 9233
- ADDED Workflow: Rerun from Child Workflow Creation 9240
- ADDED Conversation API: add resp format, model, prompt cache, usage metrics 9241, 9265, 9316
- CHORE Update github.com/dapr/go-etcd-cron to head 9242
- ADDED Remove SchedulerReminders from preview features 9244
- CHORE Add dependency scanning with dependabot 9248
- DOCS Fix typos in documentation 9255
- CHORE make gen-proto 9259
- FIXED Dapr sidecar injector: only record logs/metrics if patch was applied 9267, 9268
- SECURITY Update UID check to check only root 9272
- CHORE Sync release 1.16 branch to master 9273
- ADDED BulkPublishEvent Stable 9274, 9306
- ADDED Add support for custom Dapr service annotations 9276, 9307
- FIXED Fix HTTPEndpoint ClientTLS parsing of only root CA 9280, 9287
- ADDED Full workflow versioning 9282, 9291, 9292
- CHORE Bump components-contrib to latest main 9284
- TEST Integration: fix rerun child async test 9285, 9286
- FIXED Fix Proto files java outer classname 9288
- ADDED Add tracing to publish rawpayload events 9289, 9294, 9310
- TEST Reduce test flakes 9293
- FIXED Workflow: Clear cache when stalled 9297, 9298
- SECURITY Placement authorize Dapr actor types 9299, 9300
- CHORE ci: add repository dispatch to version skew 9303
- TEST Integration: Fix tests 9305
- CHORE durabletask-go: update go.mod ref to main HEAD 9312
- FIXED Drop Unimplemented errors on DeleteByActorID 9313, 9314
- ADDED OnBulkTopicEventAlpha1 stable 9317, 9319
- TEST Fix IT & e2e test flakes 9318, 9320
- ADDED Use Kube cluster domain for scheduler DNS 9322, 9323
- CHORE Disable kitex 9324, 9325
- TEST Test Fixes: ensure wf workers connected 9326
- FIXED Placement client: force close send on shutdown 9328, 9329
- TEST Subscriptions: Resiliency Integration Tests 9330, 9331
- FIXED Rabbitmq panic fix 9334, 9337
- CHORE Cherry pick disable init endpoints and daprd job metrics to 1.17 9335
- FIXED Fix HTTP path matching cardinality leak and support invocation auto-registration 9336, 9380
- ADDED Add workflow failure stack trace to API response 9339, 9340
- FIXED fix(ollama): bump contrib version for ollama tool call fix 9345
- FIXED Correct streaming subscription integration test failure 9346
- TEST Fix unit test failures 9350, 9351
- FIXED Allow internal workflow events 9353, 9354
- FIXED Fix: Copy header from response in SSE 9355, 9376
- SECURITY Bump golang.org/x/crypto 9362
- SECURITY Bump github.com/docker/docker 9363
- CHORE Update Go to 1.24.12 9367, 9368, 9369
- SECURITY High security fixes 9375
- REFACTOR Placement: Client Refactor 9377, 9382
- FIXED Improve output message of ErrActorNoAddress 9378
- TEST Integration: Eventually a raise on restart 9383, 9384
- FIXED Consistent behavior between 200: DROP and 404 9401, 9421
- FIXED Sentry log line fix 9403, 9404
- REFACTOR Placement server refactor 9405, 9439
- PERF Perf fine tuning 9407
- ADDED Support legacy scheduler env var 9408, 9409
- CHORE Bump go.opentelemetry.io/otel/sdk to v1.40.0 9410, 9430
- SECURITY Bump github.com/coreos/go-oidc/v3 9414
- CHORE Bump actions/setup-go from 4 to 6 9416
- TEST Integration: Wait for placement leadership 9424, 9425
- CHORE Upgrade Go to 1.25.7 9426, 9427
- CHORE Upgrade Go to 1.24.13 9428, 9429
- TEST Unit Test: fix flakes 9431, 9432
- CHORE Bump go.etcd.io/etcd/client/pkg/v3 9433
- FIXED Update contrib to include redis streams honoring resiliency 9437, 9438
- ADDED Replaced poll-based workflow completion check 9440
- FIXED Operator: check closed on client connect 9441, 9442
- CHORE Dependabot: only PR security updates 9443
- TEST Quieter amenderror test 9444, 9445
- FIXED Scheduler: print incorrect DNS names 9446, 9447
- REFACTOR Proto: remove placement import ref from runtime 9448, 9449
- CHORE Remove extraneous tab 9455
- ADDED Feature Gate: WorkflowsRemoteActivityReminder 9457
- CHORE github.com/diagridio/go-etcd-cron v1.12.1 9458, 9459
- TEST Version Skew: include scheduler int test path 9460
- FIXED Fix hot reload subscription race 9461, 9462
- ADDED V2.0.0 9463
- FIXED Metrics Path Matching Fix 9464
- CHORE Add backport action 9465
- TEST Fix pubsub e2e flake 9466
- TEST Fix actor wf perf flakes 9467
- CHORE Updates contrib to main HEAD 9468, 9469
- FIXED Configuration CRD OtelSpec missing Headers, Timeout, and secret reference support 9524
Dapr CLI
- ADDED Multi app run does not understand dependencies and ordering - leads to timing issues 1435
- CHORE Update k8s and kind versions 1546
- CHORE Merge 1.16 master 1557
- ADDED Adds
dapr schedulercommand 1559 - ADDED Workflow command support 1560
- FIXED Fix workflow resource path lookup 1564
- FIXED Workflow: no longer require DB connection string 1570
- CHORE ci: add create release workflow 1573
- ADDED Scheduler: add short help output 1576, 1577
- ADDED Adds support for workflow versioning new types 1578, 1579
- CHORE Bump go to 1.24.13 and containerd & helm 1583, 1586
- SECURITY Bump helm and opentelemetry to fix HIGH vulnerabilities 1587, 1588
- FIXED Env: Set DAPR_HOST_IP=127.0.0.1 1589, 1590
Components
- ADDED All components have been upgraded to use AWS SDK GO V2, the V1 SDK has been pruned from the dependencies. 4231
- ADDED New component - state.ravendb 3318
- ADDED Upgrade AWS Secrets Manager to AWS SDK v2 3901
- ADDED Upgrade paramstore to AWS SDK v2 3908
- ADDED Upgrade Bedrock to AWS SDK v2 3909
- ADDED Upgrade SES binding to AWS SDK v2 3911
- ADDED New v2 sqlserver state component with workflow support 4027
- FIXED Fix regression in pubsub.kafka Avro message publication 4028
- CHORE Cleanup daprbot 4033
- FIXED Close file after write 4034
- FIXED Fix Kafka AWS auth config bug 4043
- FIXED Fix aws secrets manager yaml 4044
- FIXED Reuse kafka clients 4049
- ADDED Support client JWT auth method for kafka OIDC 4057
- CHORE ci: add ravendb secrets to gh workflow 4058
- FIXED SFTP binding overloads SFTP server with connections; handle reconnections 4061, 4075
- TEST Enable dynamodb state store tests 4069
- FIXED Fix goavro bug due to codec state mutation 4070, 4071
- ADDED Support base64 decode of data transmitted for SFTP binding 4072
- FIXED Fix SFTP connection poisoning with enterprise/Axway MFT servers 4078
- FIXED Fix token renewal for pulsar oauth2 4079
- ADDED State: KeysLike 4087
- ADDED ASB Concurrent Session FIFO 4092
- ADDED Add
kidheader to kafka JWT auth 4099 - FIXED postgres v2: fix migration column name 4100
- FIXED Send audience as a single string in the JWT 4111
- SECURITY Fix critical NATS vulnerability 4114
- FIXED Fix pulsar secret filepath 4116
- CHORE Add dependency scanning with dependabot for git actions and gomod 4118
- ADDED Add response format and timeout to conversation API 4129
- CHORE dependabot modtidy and workflow improvements 4131, 4146, 4152, 4155, 4182
- ADDED Enhance Pulsar pub/sub to enable message compression 4148
- ADDED feat(conversation): add prompt cache and usage metrics 4154
- CHORE Bump cloudwego/kitex to v0.15.4 4158
- ADDED Propagate message metadata in pubsub 4160, 4171
- FIXED Fix Pulsar pubsub initialization when using oauth2ClientSecretPath 4161
- ADDED Upgrade SNS binding to AWS SDK v2 4169
- ADDED Upgrade SQS binding to AWS SDK v2 4170
- ADDED Upgrade DynamoDB binding to AWS SDK v2 4172
- ADDED Upgrade Kinesis binding to AWS SDK v2 4173
- TEST Fix MySQL certification test failure check 4180, 4185
- ADDED Update postgres configuration AWS authentication to use new credential provider 4181
- SECURITY Fix high vulnerability on cloudflare worker 4184
- FIXED Fix race condition in RabbitMQ 4190
- FIXED Remove in-memory pubsub retries 4191
- FIXED fix(ollama): use openai client to support tool calling 4192
- CHORE Bump cloudflare worker dependencies (wrangler, jose, esbuild) 4199, 4200, 4201
- FIXED Fix MySQL regression 4202
- TEST Add MySQL certification tests 4204
- CHORE Update main and test dependencies 4205
- FIXED Make Redis Streams PubSub honor resiliency policy 4208
- ADDED feat: strict SFTP operations 4211
- CHORE SFTP binding: check for error message 4214
- CHORE Ensure all components properly registered 4215
- FIXED fix(nr): update AWS auth support to match docs 4216
- FIXED fix(pulsar): update subscription options to use metadata values 4218
.NET SDK
General
- ADDED Support for .NET 10 1676
- ADDED NuGet Trusted Publishing - OIDC Support 1651
- UPDATED Fix typos and improve code consistency 1659
- UPDATED Facilitating changes to GitHub branch merge rules in build steps 1668
- UPDATED Expand output binding invocation docs 1652
- UPDATED Fix markdown link syntax in dotnet-messaging docs 1654
- UPDATED Migrate docs from SDK repository to dapr/docs 1655
Examples
- ADDED Added workflow versioning (patch + named) example 1706
- ADDED Example demonstrating how to unit test workflows/activities 1708
- UPDATED Update to Aspire 13.x 1661
- REMOVED Obsolete service invocation example 1698
Actors
- FIXED UseJsonSerialization setting properly applied at startup 1648
Conversation
- UPDATED Support latest API updates 1696
PubSub
- UPDATED Marking PubSub bulk publish as API stable 1681
- FIXED Handling graceful cancellation in CloudEventsMiddleware to prevent 499 errors 1713
Service Invocation
- UPDATED Marking service invocation methods as [Obsolete] per best practices 1698
Workflows
- ADDED Multi-app workflow support in .NET 1675
- ADDED Add logging message indicating established gRPC workflow stream 1688
- ADDED Add Workflow patch-based versioning support 1687
- ADDED Add Workflow name-based versioning support 1700
- ADDED Added built-in workflow versioning strategies 1707, 1710
- ADDED Added support for automatic workflow registration across referenced projects for named versioning 1711
- UPDATED Clean implementation of Dapr.Workflow 1662
- UPDATED Make resilient to load order differences (dapr/app) + workflow reconnection 1680
- FIXED Fix workflow execution is uncertain 1667
- FIXED Fix workflow gRPC streaming is blocked 1671
- FIXED Fix workflow execution order 1684
- FIXED Fix activity track failure 1692
- FIXED Ensure TFMs populate in
Dapr.Workflow.Versioningpackage 1709
Testing
- ADDED Add Testcontainer support for .NET 1664
- ADDED Adding integration testing for Dapr.Workflow 1669
- ADDED Adding integration testing for Dapr.Jobs 1674
- ADDED Adding integration testing for Dapr.DistributedLock 1682
- ADDED Adding mechanism to enable container log capture to file 1701
- UPDATED Improved GitHub build action to better perform integration and unit testing 1693
- UPDATED Added automated last X RC runtime version testing to matrix 1701
- UPDATED Improved Dapr readiness checks in Dapr.Testcontainers 1705
- FIXED Fix timezone-dependent ArgumentOutOfRangeException in WorkflowState test 1690
A big thank you to the following .NET SDK contributors that made this release possible: @whitwaldo, @zglp, @sunnynagavo, @atrauzzi, @marcduiker, @daanschutte, @ali-Hamza817, @ZeBobo5
Java SDK
- FIXED Inconsistent behaviour between docs and implementation in Actor Timers and Reminders 681
- ADDED FEATURE PREVIEW: Add Actor State TTL support 849
- ADDED Add Cryptography API to Java SDK 1073, 1599
- ADDED Add OpenFeign Client for Dapr service invocation 1181, 1294
- ADDED Spring Boot Cloud Config integration 1225, 1230
- CHORE Automate syncing dapr/durabletask-java 1397
- ADDED Add taskName and input to retry context 1423
- ADDED Trace propagation for durabletask-java and durabletask-go 1485
- ADDED Add Dapr Testcontainers subscription scopes 1491
- ADDED Support native compilation for the Java SDK 1509
- CHORE Remove shaded deps 1543
- DOCS Add architecture diagram to README 1549
- REFACTOR Align Java API with workflow naming conventions 1554, 1560
- CHORE Update Spring Boot Matrix for 3.5.x and 3.4.x 1558
- ADDED Check Dapr runtime containers before starting another one 1562
- CHORE Centralize Maven dependency version management 1564
- ADDED Setting default props for DaprClient 1567
- FIXED Pass metadata in saveState 1569, 1570
- FIXED Fix dependencies for multi app build 1572
- CHORE Replace openjdk:17-jdk-slim with eclipse-temurin:17-jdk-jammy 1574
- ADDED Bring Durable Task Java as a Maven module inside the Java SDK 1575
- ADDED Register activity with @Component value when provided 1577
- ADDED Add withAppProtocol and gRPC support to Dapr testcontainer 1578, 1586
- DOCS Add statestore example with Outbox pattern 1582
- ADDED Add support for HttpPipeline 1585
- CHORE Bump actions/upload-artifact 1587, 1606
- CHORE Use dependencies BOM and remove duplicates 1588
- DOCS Examples and docs for App API Token authentication (gRPC and HTTP) 1589
- ADDED Add micrometer traces to DaprWorkflowClient 1592
- CHORE Remove SDK docs (migrated to main Docs repo) 1593
- CHORE Bump actions/checkout from 5 to 6 1595
- CHORE Maven version, properties and plugin improvements 1596
- ADDED Add Flux-based subscribeToEvents method 1598
- ADDED Initial workflow dashboard config for testcontainers 1601
- ADDED Jobs API promotion to DaprClient 1602
- TEST Fix flaky DaprPubSubOutboxIT test 1605
- CHORE Bump codecov/codecov-action 1607
- ADDED Add support for dead-letter topics in streaming subscriptions 1608, 1615
- ADDED Create Dapr WaitStrategy to improve integration test ergonomics 1609
- ADDED Add DaprSpringBootTest and DaprSidecarContainer annotations for integration tests 1610
- CHORE Upgrade Protobuf to 4.x.x 1611
- ADDED Add raw event subscription alongside CloudEvent subscription 1617
- CHORE Bring DurableTask Client to Maven standards 1618
- ADDED feat: Propagate tracing info 1619
- CHORE Update dapr version to 1.17.0 1620, 1651
- ADDED Add PATCH to HttpMethods enum and HttpExtension for service invocation 1623, 1644
- ADDED feat: Add workflow versioning 1624
- CHORE Bump org.assertj:assertj-core 1627
- ADDED Add Named Timers to the Java SDK 1628
- ADDED Allow registering custom TaskOrchestrationFactory and TaskActivityFactory 1629, 1630
- ADDED Introduce closeNow() for immediate shutdown 1632
- CHORE Remove unnecessary variable; replace log-based waits with DaprWait strategy 1634, 1635
- CHORE Cherry-pick master to 1.17 branch 1637
- ADDED Add new fields to conversation API 1639, 1640
- ADDED Make bulk pubsub stable 1641
- ADDED feat: Add failure policy to actor reminders 1643
- ADDED Support Jackson3 with Spring Boot 4.x using DefaultObjectSerializer 1647
Python SDK
- CHORE Bump actions/setup-python from 5 to 6 830
- FIXED Wait for Dapr health check asynchronously to avoid blocking gRPC stream close 839
- CHORE Extend key generation time 845
- CHORE Merge release-1.16 branch changes to main 851
- CHORE Lint update 854
- CHORE Remove python 3.9 support 860
- ADDED Async workflow client implementation 861
- ADDED Add Dapr checkpointer for LangGraph 862, 868
- CHORE Fix CI - CLI version step 863
- CHORE Bump mypy-protobuf 864, 888
- CHORE Remove SDK docs (migrated to main docs repo) 866
- CHORE Bump actions/checkout from 5 to 6 867
- CHORE Fix ext package typing 869
- ADDED Add Strands Agent Session Manager 872
- CHORE Update grpcio and regenerate gRPC files 877
- TEST Fix metadata testcase for release 1.17 878
- DOCS Fix subscribe docstring typo 883
- CHORE Trigger CI for new ext tags 886
- FIXED Fix workflow client missing close function 889
- ADDED Workflow versioning 893
- FIXED Fix signal when dt reader stream is ready within workflow client start 901
- ADDED feat(convo): add new fields to conversation API 902
- CHORE Bump fossas/fossa-action 904, 912
- CHORE Bump durabletask-dapr 905
- CHORE fix(build): capture latest + rereleases for dapr runtime + CLI 906, 913
- CHORE Update durabletask 908, 909
- CHORE Update mypy_protobuf 910, 914
- CHORE Use backport GitHub action 911
Documentation
- DOCS State Store: Alicloud table store missing 4795
- DOCS bindings.dubbo component missing in docs 4798
- DOCS OCI Object Storage missing 4799
- DOCS Twilio bindings need addition/edit 4800
- DOCS Alibaba Cloud Log Storage binding missing from table 4804
- DOCS RocketMQ binding missing 4806
- DOCS Secret store tencentcloud.ssm missing 4808
- DOCS Huaweicloud missing from Secret Store table 4809
- DOCS Add documentation for Pulsar PubSub message compression 4990
- DOCS Document Dapr.Workflow .NET SDK changes for 1.17 release 4991
- DOCS Added docs for RavenDB as State Store 4738
- DOCS doc: add openbao.md 4917
- DOCS [1.16] Update perf test docs to point to the new source of truth 4961
- DOCS docs: update bedrock metadata 4980
- DOCS .NET SDK - Updated guidance around specifying both HTTP and gRPC sidecar ports for SDK 4993
- DOCS Added docs for workflow versioning 5003
- DOCS Add support for custom annotations in dapr sidecar service 5005
- DOCS [1.17] Workflow/CLI/Reminder Documentation 5017
- DOCS Added low-level workflow protocol documentation 5024
- DOCS docs(convo): add new fields and make corrections on caching 5027
- DOCS Add new documentation to enable Pulsar PubSub message compression 5028
- DOCS feat: Introduce sqlserver state store v2 5032
- DOCS style: update agents api 5034
- DOCS Feature workflows remote activity reminder 5036
- DOCS Feature workflows remote activity reminder 1.17 5039
- DOCS [1.17] Docs redis honor resiliency 5044
- DOCS docs: configuration otel headers secretref 5047
- DOCS Added ravendb to the docs 5050
Quickstarts
- CHORE JS SDK version 3.6.1 1265
- FIXED Remove HTTPS redirection (known issue with Dapr SDK) from quickstart test 1268
- CHORE Rename assembly outputs to remove “App”/“Service” suffixes 1271
- CHORE Update Conversation example to use Conversation Alpha 2 1272
- CHORE Bump Runtime, CLI and SDK to RCs 1278
Upgrading to Dapr 1.17
To upgrade to this release of Dapr, follow the steps below to ensure a smooth upgrade.
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:
dapr uninstall --all
Download the latest release from here and put the dapr binary in your PATH.
Once you have installed the CLI, run:
dapr init --runtime-version=1.17.0
Wait for the update to finish, ensure you are using the latest version of Dapr(1.17) with:
$ dapr --version
CLI version: 1.17
Runtime version: 1.17
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 release from here and put the dapr binary in your PATH.
To upgrade Dapr, run:
dapr upgrade --runtime-version 1.17.0 -k
To upgrade with high availability mode:
dapr upgrade --runtime-version 1.17.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.17 --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 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.17 --namespace dapr-system --wait
Alternatively, you can use the latest version of CLI:
dapr init --runtime-version=1.17.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-sidecar-injector dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
dapr-sentry dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
dapr-operator dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
dapr-placement dapr-system True Running 1 1.17 15s 2026-02-12 13:07.39
After Dapr 1.17 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
None.
Deprecation Notices
Alpha Bulk PubSub APIs are being deprecated in favor of the stable Bulk PubSub APIs. The alpha Bulk Publish and Bulk Subscribe APIs (/v1.0-alpha1/publish/bulk/<pubsub-name>/<topic> and BulkPublishEventAlpha1) are now deprecated. The app callback OnBulkTopicEventAlpha1 is also now deprecated.
The alpha APIs remain functional in Dapr v1.17 - Dapr will log a deprecation warning and automatically fallback to them if your application still uses them. This gives users time to migrate to the stable APIs (/v1.0/publish/bulk/<pubsub-name>/<topic> and BulkPublishEvent) and OnBulkTopicEvent for the app callback.
See the section above titled Bulk PubSub API is now Stable for full details on the promoted APIs, migration steps, backwards compatibility behavior, and documentation links.
下载链接
- daprd_darwin_amd64.tar.gz
- daprd_darwin_amd64.tar.gz.sha256
- daprd_darwin_arm64.tar.gz
- daprd_darwin_arm64.tar.gz.sha256
- daprd_linux_amd64-stablecomponents.tar.gz
- daprd_linux_amd64-stablecomponents.tar.gz.sha256
- daprd_linux_amd64.tar.gz
- daprd_linux_amd64.tar.gz.sha256
- daprd_linux_arm-stablecomponents.tar.gz
- daprd_linux_arm-stablecomponents.tar.gz.sha256
- daprd_linux_arm.tar.gz
- daprd_linux_arm.tar.gz.sha256
- daprd_linux_arm64-stablecomponents.tar.gz
- daprd_linux_arm64-stablecomponents.tar.gz.sha256
- daprd_linux_arm64.tar.gz
- daprd_linux_arm64.tar.gz.sha256
- daprd_windows_amd64.zip
- daprd_windows_amd64.zip.sha256
- grafana-actor-dashboard.json
- grafana-actor-dashboard.json.sha256
- grafana-sidecar-dashboard.json
- grafana-sidecar-dashboard.json.sha256
- grafana-system-services-dashboard.json
- grafana-system-services-dashboard.json.sha256
- injector_darwin_amd64.tar.gz
- injector_darwin_amd64.tar.gz.sha256
- injector_darwin_arm64.tar.gz
- injector_darwin_arm64.tar.gz.sha256
- injector_linux_amd64.tar.gz
- injector_linux_amd64.tar.gz.sha256
- injector_linux_arm.tar.gz
- injector_linux_arm.tar.gz.sha256
- injector_linux_arm64.tar.gz
- injector_linux_arm64.tar.gz.sha256
- injector_windows_amd64.zip
- injector_windows_amd64.zip.sha256
- operator_darwin_amd64.tar.gz
- operator_darwin_amd64.tar.gz.sha256
- operator_darwin_arm64.tar.gz
- operator_darwin_arm64.tar.gz.sha256
- operator_linux_amd64.tar.gz
- operator_linux_amd64.tar.gz.sha256
- operator_linux_arm.tar.gz
- operator_linux_arm.tar.gz.sha256
- operator_linux_arm64.tar.gz
- operator_linux_arm64.tar.gz.sha256
- operator_windows_amd64.zip
- operator_windows_amd64.zip.sha256
- placement_darwin_amd64.tar.gz
- placement_darwin_amd64.tar.gz.sha256
- placement_darwin_arm64.tar.gz
- placement_darwin_arm64.tar.gz.sha256
- placement_linux_amd64.tar.gz
- placement_linux_amd64.tar.gz.sha256
- placement_linux_arm.tar.gz
- placement_linux_arm.tar.gz.sha256
- placement_linux_arm64.tar.gz
- placement_linux_arm64.tar.gz.sha256
- placement_windows_amd64.zip
- placement_windows_amd64.zip.sha256
- scheduler_darwin_amd64.tar.gz
- scheduler_darwin_amd64.tar.gz.sha256
- scheduler_darwin_arm64.tar.gz
- scheduler_darwin_arm64.tar.gz.sha256
- scheduler_linux_amd64.tar.gz
- scheduler_linux_amd64.tar.gz.sha256
- scheduler_linux_arm.tar.gz
- scheduler_linux_arm.tar.gz.sha256
- scheduler_linux_arm64.tar.gz
- scheduler_linux_arm64.tar.gz.sha256
- scheduler_windows_amd64.zip
- scheduler_windows_amd64.zip.sha256
- sentry_darwin_amd64.tar.gz
- sentry_darwin_amd64.tar.gz.sha256
- sentry_darwin_arm64.tar.gz
- sentry_darwin_arm64.tar.gz.sha256
- sentry_linux_amd64.tar.gz
- sentry_linux_amd64.tar.gz.sha256
- sentry_linux_arm.tar.gz
- sentry_linux_arm.tar.gz.sha256
- sentry_linux_arm64.tar.gz
- sentry_linux_arm64.tar.gz.sha256
- sentry_windows_amd64.zip
- sentry_windows_amd64.zip.sha256