为何Temporal信号未加密?非生产环境异常排查求助
针对你遇到的问题——自定义数据转换器已实现加密,生产环境正常但非生产环境下部分信号未加密(Encode已调用但UI显示binary/plain),可以从以下几个方向排查:
检查数据转换器的全局注册完整性
确认非生产环境的Worker和Client初始化时,是否将自定义DataConverter全局配置到位。有些场景下会出现仅给WorkflowStub单独设置转换器,而Signal调用使用了默认转换器的情况;或者Worker启动时未将转换器传入所有相关配置项(比如SignalHandler的初始化参数)。验证Encode方法的返回Payload结构
虽然日志显示Encode被调用,但要打印返回的Payload完整字段,重点看Encoding值是否为你自定义的编码类型(而非默认的binary/plain)。有可能非生产环境的代码存在分支逻辑,导致返回了未正确设置编码的Payload;或者加密后的数据被后续的默认序列化逻辑覆盖。对比生产与非生产的集群配置差异
检查非生产Temporal集群是否启用了特殊的全局DataConverter配置,比如集群层面强制使用默认Codec、添加了额外的Payload拦截器,或者命名空间的DataConverter配置和生产不一致。排查Signal调用的代码差异
对比生产和非生产环境的Signal调用代码,看是否存在测试场景下的特殊处理:比如非生产环境的测试代码为了调试方便,硬编码使用默认DataConverter发送Signal;或者Signal参数的序列化方式不同(比如使用了RawPayload而非自定义转换器处理)。检查加密逻辑的环境分支或类型判断
确认自定义加密算法中是否存在针对环境的判断分支,导致非生产环境下Signal的加密逻辑被跳过;或者针对Signal类型的判断条件(比如Signal名称、Payload类型)在非生产环境下不匹配,未触发加密。
内容的提问来源于stack exchange,提问作者Sukeesh

