概要
AWS Auroraのマイナーバージョンアップ中に以下のエラーが出ていました。
The last transaction was aborted due to Zero Downtime Patch. Please retry.
初めて見たエラーだったので調査してみました。
原因
このエラーは、Auroraのパッチ適用時(Zero Downtime Patch: ZDP)や再起動時に、進行中のトランザクションが強制的にロールバックされるために発生するとのこと。
上記記事にもありますが、ZDPとは、インスタンスの再起動やパッチ適用時に接続が切断されないようにするための仕組みです。できるだけダウンタイムが発生しないようにアップデートしてくれるんですね。
また、以下のようにも記載があります。
データベースエンジンの再起動により、数秒から約 1 分間スループットが低下する可能性があります。
ZDPは、トランザクション中やロック保持中のセッションは新しいプロセスに移行できず、強制的にロールバックされます。
つまり、ちょうどZDP実行中にAPIリクエストがDBにアクセスしたため、トランザクションがロールバックされ、エラーが返された、ということが考えられます。
ZDPがあるから「完全にダウンタイムゼロ」というわけではなく「ほぼダウンタイムゼロ」ということに注意が必要ですね。