GYAOの窓際エンジニア 玉利です。
オフショアマネージメントの仕事が忙しくて、個人作業が滞ってました。みなさんすみません。
久しぶりにNiFiを起動して仕事を始めると、前回うごいていたGetKafkaが、なにやら動きません。
[2016-03-19 18:21:55,250] ERROR [Replica Manager on Broker 0]: Error when processing fetch request for partition [nifi,0] offset 605 from consumer with correlation id 522. Possible cause: Request for offset 605 but we only have log segments in the range 0 to 0. (kafka.server.ReplicaManager)
どうやら、consumerのポインタがずれたようです。実在しない605番を取得しようとしてるけど、すでにlogには残っていないっぽいですね。
試験環境では、Kafka ConsumerとしてGetKafkaおよびコマンド kafka-console-consumer.shを叩いて使っています。こういう状況がおきるのは、実運用では以下のようなケースが予想されます。
- コンシューマを長期間サービスアウトしてて、もどしたらオフセットポインタのデータがすでにkafkaログから消えてた
とりあえず、いろいろ悪あがきをしていました。私の得た結果は以下になります。
結論
- GetKafkaのオフセットポインタを手動でクリアするのは難しい
- GetKafkaは再作成、コピーはオフセットデータも継承するので×
- おそらく、コンテナごと作り直しするのが正しい
2時間くらいハマりましたが、コンテナ時代ではシステムの修理ではなくてモジュール使い捨ての作り直しが速い、という設計思想なんですね。どこかのxmlに格納されてるデータをいじってがんばれば直せるかもしれませんが。。。