当前位置: 首页 > 知识库问答 >
问题:

Kafka Connect:“任务已存在于此工作线程中”

勾炜
2023-03-14
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)

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

{"error_code":404,"message":"HTTP 404 Not Found"}

我不知道是什么。谢谢

共有1个答案

葛昱
2023-03-14

我们看到这个问题在单节点分布式连接集群(Kafka的最新版本2.0.0)中发生了几次。我们在配置了1个任务的Confluent JDBC接收器中看到了这一点。

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

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

 类似资料:
  • 问题内容: 假设我们正在集群模式下工作,我们有三个节点: 经理1 工人1 工人2 是否可以创建服务并指定任务仅在工作者(worker1和worker2)中运行,而不必在管理者(manager1)中运行 我正在运行以下命令来创建服务: 当我ps服务时: 我得到: 问题答案: 虽然您可以使用 约束 (带有)根据节点的角色(管理者或工作人员)消除节点的子集,但我将通过以下方式 使Manager不再像Wo

  • 在我的项目中,我正在构建一个Java的执行框架,它接收来自客户端的工作请求。工作(大小不同)被分解为一组任务,然后排队等待处理。有单独的队列来处理每种类型的任务,每个队列都与一个ThreadPool相关联。ThreadPools的配置方式使引擎的整体性能达到最佳。 这种设计有助于我们有效地平衡请求的负载,大型请求不会占用系统资源。然而,当一些队列为空并且它们各自的线程池闲置时,该解决方案有时会变得

  • 我试图理解如果下面是线程安全的,它是由另一个开发人员编写的代码,我已经继承和不再与我们在一起。 我有一个BaseProvider类,它实际上是一个消息缓存,由LinkedBlockingQueue表示。该类将传入的消息存储在队列中。 我有一组读此队列的辅助线程。因此,LinkedBlockingQueue是线程安全的。 正如您所注意到的,每个辅助线程都可以访问所有的提供者,所以当一个辅助线程遍历所

  • 我是JavaFx/并发的新手,所以我在JavaFX中阅读了并发教程,但是我仍然对JavaFX Gui中后台线程的实现有点困惑。 我试图编写一个与一些串行设备(使用JSSC-2.8)接口的小图形用户界面,并根据这些设备的响应更新图形用户界面。但是,在写入消息和设备响应之间有一个延迟,在任意的时间内使用Thread.sleep()对我来说不是一个可靠的编程方式。因此,我想使用并发包中的等待()和通知(

  • 我正在创建一个可以监视100-150个设备的监视应用程序...现在要设计一个监视器应用程序,我有两种方法: > < li> 为每个要监控的设备创建一个线程,每个线程将ping(使用ICMP)设备以了解设备是否在线。这些线程将无限期地运行,以便在特定的时间间隔(比如60秒)后了解它们的状态。 创建一个线程池,并为每个设备提交一个任务到一个线程池。任务是简单地 ping 到设备。因此,在当前设计中,任

  • 3.3.2 Java 工程任务 Java plugin 创建了两个主要的任务,主要的引导任务都依赖他们。 assemble jar 这个任务创建所有输出 check test 这个任务运行所有测试 jar 任务直接或者间接的依赖其他任务:比如 classes 会编译所有Java代码. testClasses 会编译所有测试,但是它很少使用,因为 test 这个任务依赖它(和 classes 差不多