2014年11月15日

45. PostgreSQLとのネットワークの瞬断について

本番環境でトランザクションが残存してしまうことへの恐怖心から、PostgreSQLとのネットワークの瞬断が発生した場合を検証したため、まとめておく。
ちなみに、PostgreSQL(7.4、8.x、9.x)の約7年間半の運用実績の中では、上記に関連するトラブルは発生していない。

getConnection() :
(LAN線を抜くことにより)5秒程度の間、通信ができなくてもエラーは発生しなかった。

commit() :
(LAN線を抜くことにより)5秒程度の間、通信ができなくてもエラーは発生しなかった(10数秒程度の間でもエラーが発生しなかった場合あり)。
また、通信エラーが発生した場合、トランザクションが残存する(ロック維持)。
さらに、既にクローズされていた場合(=SQL文の発行時に通信エラーが発生したことにより自動的にクローズされた場合)はエラーが発生する。

rollback() :
通信エラーが発生した場合、トランザクションが残存する(ロック維持)。
また、既にクローズされていた場合(=SQL文の発行時に通信エラーが発生したことにより自動的にクローズされた場合)はエラーが発生する。

close() :
通信エラーが発生した場合、トランザクションが残存する(ロック維持)。
また、既にクローズされていた場合(=SQL文の発行時に通信エラーが発生したことにより自動的にクローズされた場合)もエラーは発生しない。

この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック