皆さん、Goでkafkaやっとりますか?僕はバリバリ伝説な感じでバリバリやっとります。
というわけで、最近kafka2.0がリリースされましたね。
うちでも使うかと2.0にアップグレードしたんですが、見事にsaramaを使ったGo製のProducer/Consumerが死にました、南無。
突然の死
メッセージ受け取った瞬間、こんな感じで死にました。
2999-19-05T10:39:05.798+0900 error Failed receive message {"error": "kafka: error while consuming hoge/0: kafka: error decoding packet: CRC didn't match expected 0x0 got 0xe38a6876"}
あじゃぱ〜。
こりゃ2.0の速にsaramaがついていっておらんなとISSUEを掘りにいきました。
イッシュー
そうそうこれこれ。
wladhさんが見てくれて解説してくれてますね。
で、問題解決PRがこれ。
斜め読みするとkafka2.0から導入されたメッセージチャンクのダウンコンバートのせいでオフセットがズレてデコードエラーになったっぽいですね、知らんけど。
メッセージチャンクについてはこの辺の記事が関連。
KIP-283: Efficient Memory Usage for Down-Conversion - Apache Kafka - Apache Software Foundation
解決
なので、とりあえずこのPRを適応すれば動くようになります。
今の所、最新のmaster branchには突っ込まれているので適宜追従しておきましょう。