You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS KCL Worker关闭后租约表条目超分片数问题排查与解决

问题:DynamoDB Streams KCL 租约表异常交互(版本1.6.0)

使用AWS KCL(DynamoDB Streams适配器版本1.6.0)开发流服务时,遇到租约表与Worker异常交互问题:

  • 流仅包含15个分片(已通过aws dynamodbstreams describe-stream命令确认)
  • 租约表初始有约105条租约,最终自动降至15条
  • 关闭应用时,日志显示这15条租约对应的Worker关闭原因为ZOMBIE
  • 应用关闭后,租约表条目数又增至约97条,导致后续启动服务失败,仅能通过删除租约表重置,但问题会重复出现

当前使用的shutdown方法实现如下:

public void shutdown(ShutdownInput shutdownInput) {
    log.info("Shutting down, reason: " + shutdownInput.getShutdownReason());
    try {
        if (shutdownInput.getShutdownReason() == ShutdownReason.TERMINATE && prevRecord != null) {
            shutdownInput.getCheckpointer().checkpoint(prevRecord);
        }else if (shutdownInput.getShutdownReason() != ShutdownReason.ZOMBIE){
            shutdownInput.getCheckpointer().checkpoint();
        }
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }
}

预期行为:Worker关闭时,能从上次checkpoint的位置恢复租约。


问题根源与解决方案

  • 问题根源:在普通Thread中运行Worker并调用.shutdown(),会导致Worker将所有RecordProcessor实例判定为ZOMBIE,且未完成租约刷新操作
  • 解决方案:将Worker置于单线程ExecutorService中运行

内容的提问来源于stack exchange,提问作者Mason Chester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:19:52