参考
メモ
公式ドキュメント
Graceful Shutdownに関する公式ドキュメントの記述によると、グレースフルシャットダウンの強みは以下の通り。
- ログリカバリ処理をスキップする
- シャットダウンするブローカから予めリーダを移動する
実装確認
以下のあたりから、グレースフルシャットダウンの実装。
kafka/server/KafkaServer.scala:422
1 | private def controlledShutdown() { |
コントローラを取得して接続し、コントローラに対してグレースフルシャットダウンの依頼を投げる。 なお、本メソッドはKafkaServer#shutdownメソッド内で呼び出される。
なお、当該メソッドは(KafkaServerStartableクラスでラップされているが)シャットダウンフックで適用される。
kafka/Kafka.scala:70 1
2
3
4// attach shutdown handler to catch terminating signals as well as normal termination
Runtime.getRuntime().addShutdownHook(new Thread("kafka-shutdown-hook") {
override def run(): Unit = kafkaServerStartable.shutdown()
})