卡夫卡连接:“此工作程序中已存在任务”

Fra*_*sco 5 apache-kafka apache-kafka-connect

我看到了我的连接器的状态,但我有这个例外

org.apache.kafka.connect.errors.ConnectException: Task already exists in this worker: *name of the connector*
        at org.apache.kafka.connect.runtime.Worker.startTask(Worker.java:365)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder.startTask(DistributedHerder.java:857)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder.access$1600(DistributedHerder.java:109)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder$13.call(DistributedHerder.java:871)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder$13.call(DistributedHerder.java:867)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

当我执行curl -s ip:8081/connectors/name of connector/tasks命令查看连接器的任务列表时,我得到了这个结果

{"error_code":404,"message":"HTTP 404 Not Found"}
Run Code Online (Sandbox Code Playgroud)

我不知道它是什么。谢谢

And*_*son 2

我们发现这个问题在单节点分布式 Connect 集群(Kafka 最新版本 2.0.0)中多次发生。我们在配置了 1 个任务的 Confluence JDBC Sink 中看到了这一点。

查看源代码和堆栈跟踪,似乎org.apache.kafka.connect.runtime.Workerorg.apache.kafka.connect.runtime.distributed.DistributedHerder不以相同的方式加载任务状态。不知何故,Worker 已经拥有任务 0,但 DistributedHerder 想要(再次)添加它。

重新启动任务以及重新启动连接器对我们没有帮助。相反,在我们的例子中,重新启动连接进程解决了这个问题。