Kafka-backup: بعد NPE آخر

تم إنشاؤها على ١٧ مارس ٢٠٢٠  ·  16تعليقات  ·  مصدر: itadventurer/kafka-backup

فقط اضغط على NPE أدناه أمس (باستخدام الالتزام 3c95089c). تمت المحاولة اليوم بأحدث التزام من السيد (f30b9ad9) على الرغم من أنه لا يزال موجودًا. الإخراج أدناه من أحدث إصدار.

ما الذي تغير. لقد قمت بالترحيل إلى eCryptfs. أوقفت kafka-backup ، وأعدت تسمية target dir ، وأفرغت و chattr +i 'd تكوين الحوض الاحتياطي (لمنع kafka-backup من أن يبدأ بواسطة Puppet مرة أخرى). ثم قمت بنشر تغييرات eCryptfs ، وأعدت rsync مرة أخرى ، ثم ألغيت - chattr +i 'd وأعدت تطبيق Puppet.

الآن السؤال الرئيسي هل يجب أن نحاول تصحيح هذا على الإطلاق؟ أم يجب علي مسحه فقط وعمل نسخة احتياطية جديدة أخرى؟ هذا هو سؤال وجواب لذلك لدينا بعض الوقت في حالة.

[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)
bug

ال 16 كومينتر

JFYI ، لقد مسحته وبدأت بنسخة احتياطية جديدة. لا تتردد في إغلاق هذه القضية.

حسنًا ... هذا غريب ... سطور التعليمات البرمجية ذات الصلة هي كما يلي: https://github.com/itadventurer/kafka-backup/blob/f30b9ad963c8a7d266c8eacd50bd7c5c3ddbbc16/src/main/java/de/azapps/kafkabackup/SinkT # L121 -L122

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/ وأرسل لي رابطًا. سأحاول إعادة إنتاج الخطأ.
بخلاف ذلك ، يمكنك محاولة إعادة إنتاجه باستخدام مجموعة جديدة أو نغلق المشكلة الآن على أمل أن تكون على صواب ؛)

حدث اليوم على كتلة أخرى أيضا ...
لدي cronjob النسخ الاحتياطي Azure الذي يوقف kafka-backup ، ثم يقوم بتجميع eCryptfs ، ثم عمل azcopy sync ، ثم إعادة تثبيت eCryptfs وبدء kafka-backup.
الليلة فشلت الخطوة umount ، لذا فشل البرنامج النصي أيضًا ( set -e ). أعتقد أن هذا هو الوقت الذي تحدث فيه المشكلة. على الرغم من أنني بحاجة إلى إعادة فحص الجدول الزمني بعناية. سيتم تحديث هذه المشكلة في وقت لاحق.

محدث. لقد قمت بفحص السجلات الآن. حدث NPE في وقت سابق في الواقع. تم قتل Kafka-backup بواسطة OOM عدة مرات ... يبدو -Xmx1024M أو Docker memory_limit=1152M غير كافٍ لهذه المجموعة :( أي أفكار حول كيفية حساب حجم HEAP / RAM للنسخ الاحتياطي kafka ؟

هل تريد مني القيام ببعض التصحيح على هذه البيانات؟ لا يمكنني تحميله لأنه يحتوي على بيانات حساسة للشركة ...

راجع للشغل يمكن أن فشل الحوض يسبب خروج kafka-connect؟ سيكون من الجيد أن تفشل عملية الاتصال المستقلة بأكملها في حالة فشل الحوض الفردي (في حالة عدم وجود حوض / موصل آخر).

راجع للشغل يمكن أن فشل الحوض يسبب خروج kafka-connect؟ سيكون من الجيد أن تفشل عملية الاتصال المستقلة بأكملها في حالة فشل الحوض الفردي (في حالة عدم وجود حوض / موصل آخر).
انظر رقم 46

محدث. لقد قمت بفحص السجلات الآن. حدث NPE في وقت سابق في الواقع. تم قتل Kafka-backup بواسطة OOM عدة مرات ... يبدو أن -Xmx1024M أو Docker memory_limit = 1152M لا يكفي لهذه المجموعة :( أي أفكار حول كيفية حساب حجم HEAP / RAM للنسخ الاحتياطي kafka؟

آسف لم تفوت التحديث. لا تتردد في إضافة تعليق آخر ؛)

ليس لدي أي فكرة عن كيفية حساب ذلك الآن. فتحت تذكرة جديدة رقم 47 لتلك المناقشة

هل تريد مني القيام ببعض التصحيح على هذه البيانات؟ لا يمكنني تحميله لأنه يحتوي على بيانات حساسة للشركة ...

نعم من فضلك! سيكون هذا رائعا!

هل تريد مني القيام ببعض التصحيح على هذه البيانات؟ لا يمكنني تحميله لأنه يحتوي على بيانات حساسة للشركة ...

نعم من فضلك! سيكون هذا رائعا!

لسوء الحظ ، لست ماهرًا في تصحيح أخطاء جافا ... على الرغم من أنني أستطيع تشغيل شيء ما إذا أرشدتني في هذا الأمر.

حسنًا ، سأحاول التفكير في كيفية القيام بذلك خلال الأيام القادمة ، ربما أجد المشكلة بنفسي بالصدفة: الفرح: (أريد كتابة المزيد من الاختبارات)
ربما إذا كان من الممكن إعادة إنتاج ذلك باستخدام بيانات غير متعلقة بالشركة ، فسيكون ذلك رائعًا!

وفقًا لما رأيته هنا ، أقترح عليك قتل عملية kafka-backup kill -9 بضع مرات. أعتقد أنك قد تصل إلى الولاية :) آمل حقًا ألا تكون مرتبطة بـ eCryptfs ...

لقد رأيته اليوم أيضًا في إعداد الاختبار الخاص بي ... حاليًا أفشل في إعادة إنتاجه. سنحاول مرة أخرى خلال الأيام القادمة ...

اضغط على هذا مرة أخرى بعد ساعات قليلة من # 88 و OOM واحد ..

رأيت هذه الليلة عند إيقاف تشغيل خدمة kafka-backup قبل عمل نسخة احتياطية من blobstore في Azure:

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 [...]

: التفكير: ربما ينبغي أن أحاول إعادة إنتاجه عن طريق السماح بتشغيل برنامج Kafka Backup لبضع ساعات وإنتاج الكثير من البيانات ... بحاجة إلى التفكير في كيفية تصحيح ذلك بأكثر الطرق أهمية ...

أعتقد أنه سيكون من المفيد بعض الشيء إذا كنت تستطيع مراقبة إعداد برنامج كافكا للنسخ الاحتياطي. ربما سنرى شيئًا مفيدًا في المقاييس: التفكير:

أقوم بإعادة إنتاج نفس الخطأ:

[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 en k8s ونظام ملفات Azure File Share لتخزين النسخة الاحتياطية. سأحاول إضافة بعض السجلات في هذه المرحلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات