夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Storm-0.9.4のバージョンアップ内容

こんにちは。
少し間が空いてしまったのですが、
Stormが0.9.4にバージョンアップしたので、バージョンアップ内容をざっとまとめてみます。

  • STORM-559: ZkHosts in README should use 2181 as port.

storm-kafkaにおいて、READMEにあるZooKeeperの接続設定例が「localhost:9092」となっており、
ZooKeeperのデフォルトポートである2181で無い値になっていたので、それを修正したようです。
READMEの修正のため、機能的な変更点はありません。

  • STORM-682: supervisor should handle worker state corruption gracefully.

supervisorがローカルに保持するWorkerプロセスのHeatBeat情報が不整合を起こし、
次起動する際に起動に失敗する事象が発生する問題への対処ですね。
Xと、X.versionという2ファイルが存在するのですが、消す時にX消してX.version失敗すると
その後Supervisorが起動しなくなってしまうというものです。

そう起こる物ではないですが、起こるとStormのローカルファイルを消さないと復旧しないという厄介なものでした。

  • STORM-693: when kafka bolt fails to write tuple, it should report error instead of silently acking.

KafkaBoltでKafkaにメッセージを書き込む際に、失敗しても内容をログ出力するのみでメッセージを破棄する、
という動作だったものをメッセージの処理自体を失敗として扱うようにしてます。

このあたりは設計方針にも依る感は強いですが、とりあえず安全側に倒したというようですね。

  • STORM-329: fix cascading Storm failure by improving reconnection strategy and buffering messages

他Workerプロセスが何かしらの原因でダウンした場合の通信エラーハンドリングの改善が行われています。
今までは他のプロセスのダウンによって、他のWorkerプロセスも芋ずる式にダウンすることがあったのですが、
それが発生しにくくなるよう、再接続間隔の調整等が行われています。

  • STORM-130: Supervisor getting killed due to java.io.FileNotFoundException: File '../stormconf.ser' does not exist.

Supervisorがrebalance等の要因によって動作中のTopologyを自ノード上で動作させる時に落ちる問題への対処ですね。
設定ファイル等が各Supervisorに配信されるのはTopologySubmitのタイミングとなるため、
後からクラスタに追加する等、そのタイミングで配信されなかった場合や、何かしらの原因でファイルを保持しない
SupervisorにTopologyをrebalanceすることは出来ない問題がありました。

それが解消するようです。

今回は機能の追加はないため小さいアップデートになりますが、
STORM-682、STORM-329、STORM-130あたりは地味に重要なアップデートになりますね。
STORM-682は頻度は低いですが一度発生するとわかっていないと対応不可、
STORM-329、STORM-130は普通におき得る問題ですので。

というわけで、内容も確認したのでインストーラや依存バージョンを更新しますか〜。