Kafka-backup: 又一个 NPE

创建于 2020-03-17  ·  16评论  ·  资料来源: itadventurer/kafka-backup

昨天刚刚进入 NPE(使用提交 3c95089c)。 今天尝试了来自 master (f30b9ad9) 的最新提交,尽管它仍然在这里。 下面的输出来自最新版本。

有什么变化。 我迁移到 eCryptfs。 我停止了 kafka-backup,重命名了目标目录,清空了chattr +i 'd 备份接收器配置(以防止 kafka-backup 再次被 Puppet 启动)。 然后我部署了 eCryptfs 更改,返回了 rsync,然后取消了chattr +i并重新应用了 Puppet。

现在主要问题是我们应该尝试调试这个吗? 或者我应该擦掉它并再次进行备份? 这是 QA,所以我们有时间以防万一。

[2020-03-17 02:23:47,321] INFO [Consumer clientId=connector-consumer-chrono_qa-backup-sink-0, groupId=connect-chrono_qa-backup-sink] Setting offset for partition [redacted].chrono-billable-datasink-0 to the committed offset FetchPosition{offset=0, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=kafka5.node:9093 (id: 5 rack: null), epoch=187}} (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:762)
[2020-03-17 02:23:47,697] ERROR WorkerSinkTask{id=chrono_qa-backup-sink-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:179)
java.lang.NullPointerException
        at de.azapps.kafkabackup.sink.BackupSinkTask.close(BackupSinkTask.java:122)
        at org.apache.kafka.connect.runtime.WorkerSinkTask.commitOffsets(WorkerSinkTask.java:397)
        at org.apache.kafka.connect.runtime.WorkerSinkTask.closePartitions(WorkerSinkTask.java:591)
        at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:196)
        at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)
        at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
[2020-03-17 02:23:47,705] ERROR WorkerSinkTask{id=chrono_qa-backup-sink-0} Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:180)
[2020-03-17 02:23:47,705] INFO Stopped BackupSinkTask (de.azapps.kafkabackup.sink.BackupSinkTask:139)

所有16条评论

JFYI,我将其删除并从新备份开始。 随意关闭这个问题。

嗯……这很奇怪……相关的代码行在这里: https :

partitionWriters充满在open()呼叫https://github.com/itadventurer/kafka-backup/blob/f30b9ad963c8a7d266c8eacd50bd7c5c3ddbbc16/src/main/java/de/azapps/kafkabackup/sink/ BackupSinkTask.java#L107
每个TopicPartition需要打开它......这对我来说为什么会发生这种情况没有意义:(

您的数据是否仍可用于进一步调试? 尝试重现会很有趣。 我们至少应该显示一个有意义的错误,而不是仅仅抛出一个 NPE……

你好! 是的,我还有旧目录备份。 虽然使用它可能会影响当前的集群备份状态,但我猜是因为我没有更改接收器名称..

我的猜测是这个目标目录在 eCryptfs 启用尝试期间以某种方式被破坏。 也许某些文件被意外更改或类似的东西。

嗯……它包含敏感信息吗? 如果不放心,请将其上传到 https://send.firefox.com/ 并向我发送链接。 我会尝试重现该错误。
否则,您可以尝试使用新集群重现它,或者我们暂时关闭该问题,希望您是对的;)

今天也发生在另一个集群上...
我有 Azure 备份 cronjob,它停止 kafka-backup,然后卸载 eCryptfs,然后执行azcopy sync ,然后重新安装 eCryptfs 并启动 kafka-backup。
今晚umount步骤失败,因此脚本也失败( set -e )。 我想这是问题发生的时候了。 虽然我需要仔细检查时间表。 稍后会更新这个问题。

更新。 我刚才做了日志检查。 NPE 实际上发生得更早。 Kafka-backup 被 OOM 多次杀死...似乎-Xmx1024M或 Docker memory_limit=1152M对这个集群来说还不够:( 关于如何计算 kafka-backup 的 HEAP/RAM 大小的任何想法?

你想让我对这些数据做一些调试吗? 我无法上传它,因为它包含公司的敏感数据...

顺便说一句,失败的接收器会导致 kafka-connect 退出吗? 如果在单个接收器故障(当不存在其他接收器/连接器时)的情况下,整个独立连接过程将失败,那就太好了。

顺便说一句,失败的接收器会导致 kafka-connect 退出吗? 如果在单个接收器故障(当不存在其他接收器/连接器时)的情况下,整个独立连接过程将失败,那就太好了。
见#46

更新。 我刚才做了日志检查。 NPE 实际上发生得更早。 Kafka-backup 多次被 OOM 杀死......似乎 -Xmx1024M 或 Docker memory_limit=1152M 对这个集群来说还不够:( 关于如何计算 kafka-backup 的 HEAP/RAM 大小的任何想法?

抱歉错过了更新。 随意添加另一条评论;)

我现在不知道如何计算。 为该讨论打开了一张新票 #47

你想让我对这些数据做一些调试吗? 我无法上传它,因为它包含公司的敏感数据...

是的,请! 那将是真棒!

你想让我对这些数据做一些调试吗? 我无法上传它,因为它包含公司的敏感数据...

是的,请! 那将是真棒!

不幸的是,我不擅长 Java 调试......尽管如果你指导我,我可以运行一些东西。

好的,我会在接下来的几天里尝试思考如何做到这一点,也许我自己偶然发现了这个问题:joy:(想写更多的测试)
也许如果有可能用非公司数据重现它会很棒!

根据我在这里看到的,我建议你通过kill -9几次杀死 kafka-backup 进程。 我想你可能会进入状态 :) 我真的希望它与 eCryptfs 无关......

我今天在我的测试设置中也看到了它......目前我无法重现它。 会在接下来的几天里再试一次…

在 #88 和一个 OOM 的几个小时之后再次进入这个。

在执行 Azure blobstore 备份之前,今晚在 kafka-backup 服务关闭时看到了这个:

May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: [2020-05-30 19:19:24,572] INFO WorkerSinkTask{id=chrono_prod-backup-sink-0} Committing offsets synchronously using sequence number 2782: {xxx-4=OffsetAndMetadata{offset=911115, leaderEpoch=null, metadata=''}, yyy-5=OffsetAndMetadata{offset=11850053, leaderEpoch=null, metadata=''}, [...]
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: [2020-05-30 19:19:24,622] ERROR WorkerSinkTask{id=chrono_prod-backup-sink-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:179)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: org.apache.kafka.common.errors.WakeupException
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.maybeTriggerWakeup(ConsumerNetworkClient.java:511)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:275)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:233)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:212)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.commitOffsetsSync(ConsumerCoordinator.java:937)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:1473)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:1431)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerSinkTask.doCommitSync(WorkerSinkTask.java:333)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerSinkTask.doCommit(WorkerSinkTask.java:361)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerSinkTask.commitOffsets(WorkerSinkTask.java:432)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerSinkTask.closePartitions(WorkerSinkTask.java:591)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:196)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: #011at java.base/java.lang.Thread.run(Unknown Source)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: [2020-05-30 19:19:24,634] ERROR WorkerSinkTask{id=chrono_prod-backup-sink-0} Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:180)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: [2020-05-30 19:19:24,733] INFO Stopped BackupSinkTask (de.azapps.kafkabackup.sink.BackupSinkTask:139)
May 30 19:19:24 backupmgrp1 docker/kafka-backup-chrono_prod[16472]: [2020-05-30 19:19:24,771] INFO [Consumer clientId=connector-consumer-chrono_prod-backup-sink-0, groupId=connect-chrono_prod-backup-sink] Revoke previously assigned partitions [...]

:thinking: 也许我应该尝试通过让 Kafka Backup 运行几个小时并产生大量数据来重现它……需要考虑如何以最有意义的方式调试它……

我认为如果您可以监控您的 Kafka 备份设置会有所帮助。 也许我们会在指标中看到一些有用的东西 :thinking:

我重现了同样的错误:

[2020-07-10 11:05:21,755] ERROR WorkerSinkTask{id=backup-sink-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask)
java.lang.NullPointerException
    at de.azapps.kafkabackup.sink.BackupSinkTask.close(BackupSinkTask.java:122)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.commitOffsets(WorkerSinkTask.java:397)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.closePartitions(WorkerSinkTask.java:591)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:196)
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我正在使用 pod setup en k8s 和 Azure 文件共享文件系统来存储备份。 此时我将尝试添加一些日志。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ipochi picture ipochi  ·  3评论

huyngopt1994 picture huyngopt1994  ·  5评论

akamensky picture akamensky  ·  13评论

itadventurer picture itadventurer  ·  5评论

jay7x picture jay7x  ·  15评论