#12109·temporal

无效的系统. secondaryVisibilityWritingMode 值在每次可见性写入时都会默认失败

作者: tsurdilo创建于 2026年9月16日更新于 2026年9月16日
标签enhancement

system.secondaryVisibilityWritingMode 只接受三个值 — off, on 和 dual,因此在检查时,任何错误的输入,例如 "duel" 或 "dual" 后面带有空格,都会被接受,但在写入时才会出现错误,在每次写入时,在 defaultManagerSelector.writeManagers() 中。 由于这是一个整个集群的全局设置,因此一个小错误目前可能会造成很大的伤害: * 可导致可见性任务被发送到 DLQ。错误为 serviceerror.Internal。如果 default history.TaskDLQInternalErrors=false,则不会被视为终止,因此任务将作为意外错误重试 — 在 history.TaskDLQUnexpectedErrorAttempts (默认值为 70,约为 70 分钟) 时,可见性任务将被发送到 DLQ。用户需要使用 tdbg 工作流刷新任务来重建,这是一个麻烦。 * 症状并不指向原因。工作流执行不受影响,可见性读取仍然正常运行,因此集群看起来很健康。对此没有任何警告机制,服务器启动和运行都很正常。 请求: * 在加载值时验证值,这样 validate-dynamic-config 就可以报告错误值,并在启动时记录为警告。 * 将未识别的值视为 off 并记录警告,这样错误输入会降级为 "仅限主" 而不是 "完全不允许可见性写入"。这使集群保持功能正常,并且无需 DLQ 重放即可恢复。

内容来源: temporalio/temporal