エラーとリトライ
パイプラインのエラー
パイプラインを実行したときに出るエラーとしては次のようなものが考えられます。
- コンパイルエラー
- センサー実行時のエラー
- フィルター実行時のエラー
- ジョイント実行時のエラー
- パイプラインサービスのエラー
コンパイルエラー
コンパイルエラーは、パイプラインを設定して保存するときに発生するエラーです。コンパイルエラーが発生している間はパイプラインは開始できません。
エラーの内容はパイプライン保存時にコーディネーター下部のメッセージエリアに表示されます。ほとんどのエラーは必要なフィールドを入力せずに保存した場合に発生するものですから、設定内容を十分確認してください。
センサー実行時のエラー
センサー実行時のエラーは、パイプラインを開始した後、センサーステージにおいてデータの取り込み中に発生します。発生したエラーは主に各パイプラインのパイプラインログに出力されますが、一部エンジンログに出力されるものもあります。
スケジュール型とダイレクト型で若干異なりますが、主な原因は次のようなものが多いです。
- 設定ミス
- JDBCドライバをコピーしていない
- JDBCやメールサーバーなどの接続情報の設定ミス
- 監視フォルダが存在しない
- フォーマット変換の失敗
- XMLのパースエラー
- レコードファイル(CSV)のパースエラー
- 型変換エラー(数値フィールドに文字列が渡された)
センサーでエラーが発生した場合、元データは通常削除されません。センサーの設定の誤りが原因であれば、パイプラインの定義を修正・保存して、再開すれば復旧できます。スケジュール型アクションであれば次回実行時、ダイレクト型アクションであれば、次回のリクエスト時に同じデータが入力されれば復旧できます。
ただし、センサーによってはこの方法で復旧できないケースもあります。詳細についてはご利用のアクションのヘルプを参照ください。
フィルター実行時のエラー
フィルター実行中はデータ変換が中心なので通常はエラーが発生しません。しかし、型変換などの失敗や一部外部リソース、外部サーバーへのアクセスが必要なアクションもありますので、そのようなケースには注意が必要です。
発生したエラーは主に各パイプラインのパイプラインログに出力されますが、一部エンジンログに出力されるものもあります。
フィルターでエラーが発生した場合、自動、手動でリトライすることができます。
自動でリトライするには、パイプラインの設定でリトライ回数とリトライ待機時間を指定しておきます。エラーになったものを手動でリトライするにはリクエストモニターから再実行することができます。
ジョイント実行時のエラー
ジョイントではデータを外部リソースや外部サーバーに配信することが多いので、外部要因によってエラーが発生する可能性が高いです。このため、パイプラインサービスでは簡単にリトライする仕組みを提供しています。
発生したエラーは主に各パイプラインのパイプラインログに出力されますが、一部エンジンログに出力されるものもあります。
ジョイントでのリトライもフィルターと同じく、自動、手動の二つの仕組みを提供します。方法はフィルターの場合と同じです。自動でリトライしたい場合はパイプラインの設定で行います。手動でリトライする場合にはリクエストモニターから再実行します。
パイプラインサービスのエラー
この他、パイプラインサービスがエラーになることもあります。メモリ不足やディスク容量不足などのリソース不足が主な原因となりますので、パイプラインサービスのシステムモニターやOSやサードパーティが提供する運用監視ツールなどを利用して、状況を常時監視しておくことをお勧めします。
発生したエラーは主にエンジンログやシステムログに出力されます。特にメモリ不足のエラーが発生した場合にはその後の処理にも影響することがありますので、パイプラインサービスの再起動などの対処をした上で、リソースの増強などを計画することをお勧めします。