トークン ID のマッピングファイル(mapping-output)
mapping-output ディレクトリには、クライアントごとにひとつのマッピングファイルが格納されます。マッピングファイルは、トークン移行ツールが移行処理の一環として生成します。マッピングファイルは、移行元の各トークン ID を移行先のトークン ID に対応付けます。トークン移行ツールは、移行元のトークンが変更されたときに、マッピングファイルを使用して更新対象となる移行先のトークンを特定します。各ファイルの名前は <サービス ID>:<クライアント ID>.json です。
マッピングファイルが失われた場合、トークン移行ツールはマッピングファイルを再生成します。ただし、一部のトークンが、マッピング済みの既存トークンの更新ではなく、移行先に新しいトークンとして作成されることがあります。マッピング済みだった既存のトークン(古いトークン)は移行先に残るため、移行元でリフレッシュまたは失効されたトークンが、移行先では有効なままとなる可能性があります。
マッピングファイルが失われた場合は、トークン移行全体を最初からやり直すことを推奨します。次の手順でやり直します。
- トークン移行ツールを停止します。
- 移行済みのサービスとクライアントを移行先から削除します(トークン移行ツールが使用するサービスとクライアントは残します)。
- トークン移行ツールの永続ボリューム上のファイルをすべて削除します。
- サービスとクライアントを再度移行します。
- トークン移行ツールを起動します。
復旧ポイント
処理完了時点のタイムスタンプの保存方法
移行中、トークン移行ツールは、どの時点までのトークン変更をすべて処理したかを、処理完了時点のタイムスタンプとして記録します(ログ上の表記はmoving timestamp です)。処理完了時点のタイムスタンプまでのトークン変更をすべて処理した後、トークン移行ツールはタイムスタンプの値を ミリ秒単位の Unix エポック時刻で timestamp.txt に書き込みます(例: 1784401524667)。
timestamp.txt は、トークン移行ツールが停止した場合の復旧ポイントです。次回の起動時、トークン移行ツールは timestamp.txt に記録された時刻から処理を再開します。
トークン移行ツールはすべてのトークン変更を処理してから timestamp.txt を書き込むため、timestamp.txt の時点から再開しても、トークン変更の処理漏れは発生しません。ただし、作成済みまたは更新済みのトークンを再処理することはあります。
timestamp.txt が失われた場合
timestamp.txt が失われると、トークン移行ツールは次回の起動時に timestamp.txt を読み込めず、起動時のログに Read in moving timestamp initial value の代わりに Setting moving timestamp to the provided initial timestamp [<value>]ms を出力します(「処理完了時点のタイムスタンプの確認」を参照)。timestamp.txt が失われた場合は、次の手順で復旧します。
- トークン移行ツールを停止します(例:
tokenmigrator.enabledをfalseに設定してhelm upgradeを実行します)。 - シャットダウン時のログ
Shutting down sync migration task, latest timestamp [<value>]msから、処理完了時点のタイムスタンプの最新値を確認します(「シャットダウン時のログ」を参照)。 - 確認したタイムスタンプの値(ミリ秒単位)のみを記載した
<マウントパス>/timestamp.txtを作成します。 - トークン移行ツールを再度起動します。
Read in moving timestamp initial value ログの値)。当該値から再開した場合の影響は、一部のトークンの再処理に限られます。