другая реплика пишет?
Когда я под в кубе убиваю я вижу часть логов которые пытаются сделать graceful shutdown всякие логи отмены контекстов и тд Так вот даже там я понимаю что в моём коде for { select { case <-b.ctx.Done(): b.log.Info("Received done signal") b.finalFlush() return case <-timer.C: b.flush() b.log.Info("Success flush events") } } Вот этот Received done signal в логах не высвечиватся, потому что горутина в которой этот фор крутится явно заблокировалась где-то в выполнении b.flush() и не отпускает ;) Я вижу постоянно логи Success flush events Потом вдруг они встают, никаких логов. Я убиваю реплику, вижу логи других горутин что они завершают свою работу, но только не той горутина что флашит в кх записи)
И да, всё в консюмер группе и этот баг обнаружился как раз потому что лаг в кафке начал расти) Те партиции что читала эта реплика как бы застряли, эта реплика их не скидывала в клик и не комитила новые оффсеты по итогу) (комитила все те же оффсеты через другую горутину поэтому кафка не заподозрила проблемы я думаю)
Поставьте лог перед b.flush()
Да только проблема в том что я не могу воспроизвести этот баг) Это происходит без определённо видимых причин в каком-нибудь поде, может через сутки вылезти и вдруг остановить запись, может через трое)
Ну учитывая что лог после b.flush() есть и это всё в цикле for то в каком то смысле этот лог и перед b.flush() ;)
Вы говорите, что через какое-то время перестает. Не может во flush вешаться?
Обсуждают сегодня