同期の実行は、ワーカーの再起動、相手側システムの停止、レコードの拒否によって途中で止まることがあります。ワーカーの停止や一時的な障害の後は、Tajo が自動で同期を再開します。直近7日間に書き込んだレコードは再送しません。このページでは、Tajo が行うこと、同期のページに表示される内容、そしてお客さまの対応が必要な数少ないケースを説明します。
クイックチェック Connections の Syncs and mappings から同期を開き、Run history の最新の実行を確認します。失敗した実行には、何が起きたかと次に何をすべきかが表示されます。
Tajo が自動で行うこと
カーソル。 実行は、同期に保存されたカーソルから、ソースをバッチ単位で読みます。カーソルがバッチの最後に進むのは、そのバッチのすべてのレコードが書き込まれた場合だけです。実行が失敗した場合は、問題なく到達した最後の位置が保持されます。次の実行はそこから始まるので、中断されたバッチは飛ばされずにもう一度読まれます。
配信台帳。 レコードは書き込まれる前に配信キーを受け取ります。キーは同期、ソース、ページのカーソル、ページ内のレコードの位置、レコード自体のハッシュなので、個人データは含まれません。送信先を呼び出す前に、キーが確保されます。書き込みが成功すると、キーは完了済みとしてマークされ、7日間保持されます。キーはどの実行が問い合わせたかに左右されないため、リトライでも後の定期実行でも、同じレコードからは同じキーが導かれます。この7日間は保存された結果が使われ、送信先は再び呼び出されません。だから、再生されたバッチが二重に書き込まれることはありません。
一度に1つの実行。 各同期には1つのリースがあり、進行中の実行がその全期間にわたって保持します。リースには専用のトークンがあり、寿命は15分で、実行が動いている間は5分ごとに更新されます。リースを失った実行は、二重書き込みを避けるため、次の書き込みやチェックポイントの前に停止します。ワーカーが停止すると、そのリースは更新されなくなり、15分以内に切れます。
自動リトライ。 キューに入った実行が失敗すると、最大5回まで試行されます。Tajo は2回目の試行の前に60秒待ち、その後は120秒、240秒、480秒待ちます。お客さまが自分で開始したリトライやテスト実行は1回だけ実行されます。すでに進行中の実行と衝突した実行はリトライされません。公開済みのバージョンや接続がもう有効でない実行も同様です。
止まった実行。 Tajo がスケジュールで実行する同期では、開始から1時間以上たち、リースをもう保持していない実行は閉じられ、新しい実行がキューに入ります。閉じられた実行には「The run stopped reporting progress and was closed.」(実行が進捗の報告を停止したため、閉じられました)と表示されます。つまり、停止した実行のリースは最大15分で切れ、スケジュールで動く同期の止まった実行は1時間後に置き換えられます。どの同期がスケジュールで実行されるかは、データ同期を理解するに記載しています。
失敗が続いたときの一時停止。 同期を最後に変更して以降、終了した直近5回の実行がすべて失敗した場合、Tajo は同期を一時停止します。同期のページには「Paused automatically by the failure circuit breaker」と最後のエラーが表示されます。1回でも実行が成功すると、カウントはリセットされます。一時停止した同期が自動で再開することはありません。お客さまが原因を修正し、再び公開するまで停止したままです。
1時間ごとのチェック。 Tajo は毎時13分に、有効な同期があり、直近24時間に成功した実行がないワークスペースについて、自社のチームにアラートを送ります。実行が1件も記録されていないワークスペースも含まれます。アラートは1回だけ送られ、実行が成功した後でなければ再び送られません。最も古い有効な同期が有効化または変更されてから24時間未満のワークスペースは、まだチェックされません。このアラートが届くのは Tajo で、お客さまには届かず、同期にも変更を加えません。
表示される内容
Syncs and mappings から同期を開きます。Run history には、各実行について、読み取ったレコード数に対する書き込んだレコード数、失敗数、所要時間、開始時刻が並びます。ステータスは Queued、Running、Succeeded、Partial(一部のレコードが失敗)、Failed のいずれかです。
- 実行中で2分間進捗を報告していない実行には「Waiting for a fresh progress update」(新しい進捗の更新を待っています)と表示されます。
- 失敗した実行には、何が起きたかの一文、次に何をすべきかの一文、失敗の名前、実行 ID が表示されます。
- Syncs ページの View DLQ には、すべての同期の失敗した実行と一部失敗した実行が、それぞれ Retry ボタン付きで並びます。
対応方法
- 最新の失敗した実行を読みます。 その「次に何をすべきか」の行が次の手順です。よく出会う失敗は下の表にまとめています。
- 「Nothing」と表示されていれば、待ちます。 次の定期実行で自動的に復旧します。
- 同期をもう一度実行するよう表示されていれば、 View DLQ で失敗した実行の Retry を押します。リトライは保存されたカーソルから始まるので、すでに書き込まれたバッチは再び書き込まれません。リトライが成功すると、失敗した実行は一覧から消えます。
- 同期が一時停止している場合は、 バナーに示された原因を修正してから、Publish sync または Request publish approval で同期を再び公開します。
- 同じ失敗が繰り返される場合は、 失敗した実行の下に表示される実行 ID を私たちに送ってください。
各失敗の名前は、何が起きたかの一文、次に何をすべきかの一文、そして誰が直すか(お客さまか Tajo か)に対応しています。
| 失敗の名前 | 何が起きたか | 対応方法 | 直す人 |
|---|---|---|---|
lease_conflict | この同期の別の実行がすでに進行中でした。 | 何もしなくて大丈夫です。進行中の実行は終了し、次の定期実行は通常どおり始まります。 | Tajo |
lease_lost | 実行が途中で枠を失い、二重書き込みを避けるために停止しました。 | 同期をもう一度実行します。 | Tajo |
lease_unavailable | 同期が実行枠を確保できませんでした。 | 同期をもう一度実行します。同じように失敗する場合は、実行 ID を私たちに送ってください。 | Tajo |
stale_job_swept | 実行が進捗の報告を停止したため、閉じられました。 | 同期をもう一度実行します。 | Tajo |
provider_rate_limited | 相手側システムから処理を遅くするよう求められました。 | 何もしなくて大丈夫です。次の定期実行を待ちます。 | Tajo |
provider_unavailable | 相手側システムが利用できないか、時間内に応答しませんでした。 | 何もしなくて大丈夫です。次の定期実行を待ちます。1日にわたって同じように失敗する場合は、実行 ID を私たちに送ってください。 | Tajo |
connection_missing | 同期が使うツールが、このワークスペースで接続されていません。実行にツール名が表示されます。 | そのツールを接続してから、同期をもう一度実行します。 | お客さま |
connection_unauthorized | 相手側システムが私たちのアクセスを拒否しました。 | 接続を再接続して新しい認可を取得してから、同期をもう一度実行します。 | お客さま |
destination_rejected | 送信先がこの実行のすべてのレコードを拒否しました。 | フィールドマッピングを送信先の必須フィールドと形式に照らして確認してから、同期をもう一度実行します。 | お客さま |
node_failed | レコードの読み取り、変換、書き込みの途中で、同期のステップが失敗しました。 | 実行を開いて、どのステップがなぜ失敗したかを確認し、それを修正してから、同期をもう一度実行します。 | お客さま |
attestation_rule_not_active | この同期は一時停止しています。 | 実行するには、同期を再開します。 | お客さま |
attestation_publication_not_attested | この同期のバージョンは公開されていません。 | 同期を公開します。同期への変更は、公開されるまで実行されません。 | お客さま |
unclassified_exception | まだ分類していない理由で同期が失敗しました。 | 同期をもう一度実行します。同じように失敗する場合は、実行 ID を私たちに送ってください。 | Tajo |
うまくいかない場合
- **Retry に「This sync rule is already running.」(この同期ルールはすでに実行中です)と返される。**同期のいずれかの実行が Queued または Running と表示されている間は、お客さまが開始するリトライやテスト実行は拒否されます。ワーカーが停止した実行も含まれます。Tajo がスケジュールで実行する同期では、その実行は開始から1時間を超えた時点で閉じられ、置き換えられます。それ以外の同期では、実行 ID を私たちに送ってください。
- 同期が7日を超えて失敗している。 7日たつと、台帳は完了した書き込みを忘れます。それ以降に再生されたバッチはレコードを再び書き込むことがあるので、送信先で重複連絡先がないか確認してください。
- ある同期は動いているのに、別の同期が沈黙している。 1時間ごとのチェックが見ているのは同期ごとではなく、ワークスペースです。健全な同期が1つあると、同じワークスペースで沈黙している同期が隠れてしまいます。各同期の Run history を確認してください。
- 別の上限にしたい。 5回の失敗での一時停止と24時間のチェックは、同期ごとではなく、Tajo のデプロイ全体で設定されています。