【CDI】Informatica Cloud Data Integrationでエラー発生時のリトライ機能を実装してみた

Informatica Cloud Data Integrationでエラーが発生した場合のリトライ機能のご紹介
2023.05.09

こんにちは、データアナリティクス事業本部ビジネスソリューション部の渡部です。
今回はInformatica Cloud Data Integration(以降、CDI)で、エラー発生時のリトライ機能を実装してみました。

やりたいこと

ETL処理時にDBへの接続エラーなどで偶発的エラーが発生した場合に、自動的に処理をリトライをさせることで、人の手での障害対応件数を減らしたいです。

やってみた

タスクフローの完成図は以下のとおりです。

上記のタスクフローでは、データタスクでエラーが発生した場合に最大3回のリトライがされて、それ以上エラーが発生した場合は異常終了とさせる処理になっております。

各ステップでの設定について以下に記載していきます。

開始

一時フィールドを追加します。

  • 名前:err_count
  • タイプ:整数
  • 説明:エラー回数をカウントする変数
  • 初期値:0

割り当て

一時フィールドで追加したerr_countを1ずつカウントアップさせます。
エラー1回につき、err_countが1ずつ増えていきます。

  • 次を使用するように割り当て済み:計算式
  • 開始:$temp.err_count + 1

ディシジョン

err_countの値をみて、処理を分岐させます。

  • フィールド:err_count
  • 条件:次より小さいか等しい
  • 値:3

今回はリトライを3回するため、値を3にしています。

ジャンプ

エラーが発生したデータタスク(dt_mt_retry)にジャンプします。

  • 宛先:dt_mt_retry

実行してみた

エラーを意図的に発生させるため、ターゲットのテーブル名を変更してからタスクフローを実行しました。そしてリトライ中にテーブル名を元に戻しました。
結果、想定通りに最大である3回リトライされて、処理が正常終了していることが確認できました。

注意点

今回ご紹介したリトライ処理は、すべてのエラー発生時にリトライがなされます。
そのため、ETL処理でInsertなど積み上げでデータ登録をしている場合は、リトライ処理によって二重登録の危険があります。
リトライ処理を入れる場合は、この点の確認が必須となりますので、ご注意ください。

まとめ

以上がCDIでのリトライ機能の実装でした。
運用では人の手が入る障害対応は極力減らしたいので、偶発的エラーが発生する場合にはリトライ処理を入れるのが推奨です。

おまけ

今回ご紹介したのはエラー発生後、即リトライさせる方法でしたが、待機ステップを入れることで指定の時間、処理を止めてからリトライさせることも可能です。
例えば以下のように、2回目のリトライまでは即リトライ、3回目のリトライを10分の待機を入れてからリトライという処理が可能です。