[pgcluster: 495] Re: SELECT FOR UPDATEでLOCK 検知後、固まる不具合について

Yusuke Ito y-110 @ yumemi.co.jp
2004年 8月 12日 (木) 16:42:39 JST


お世話になっております。
伊藤と申します。

> 上記の現象は、SELECT文でLOCKが発生し、LOCKが解消してクエリーを継続する際
> シーケンスの途中から始めなければならないところを、シーケンスの最初から
> 始めようとしていたためでした。107av10以降に入ったエンバグです。
> 
> 修整した版を107av14として作製しました。
> 明日(今日)、タイミングの良いところでアップしたいと思います。

1.0.7av14リリース、ありがとうございます。
早速 1.0.7av14 を導入し、上記現象が解消されていることを確認致しました。

ただ、その検証の際に、deadlockが検出された後、psqlが落ちてしまう現象が確認されました。
下記に詳細をご報告します。

【サーバ構成】
 レプリケーションサーバ(R1)	1台
 クラスタサーバ	(C1,C2,C3,C4)	4台
 PGCluster	1.0.7av14

 サーバは全て Debian GNU 3.0 です。


【前提】
 testdb にて、create table a(int id) を実行し、110 を insert しておく。

【検証手順】
BEGIN;
SELECT id FROM a WHERE id = 110 FOR UPDATE;
COMMIT;

を1セットとしてこれを100回記述したファイルを sfu.sqlというファイル名保存。

以下、2つのパターンの検証を行いました。

1. C1〜C4で、psql -U postgres -d testdb -f sfu.sql を(ほぼ)同時に実行。
2. C1 上で psql -U postgres -d testdb -f sfu.sql を3つ同時に実行。

【結果】
1 の場合、およそ正常に実行されますが、deadlock detected が C1〜C4 上でたまに確認されます。
また、deadlock detected. が検出された直後に psql が以下のメッセージを吐いて落ちる場合があります。
これは、毎回起こるわけではなく、少ない割合で発生します。

BEGIN
psql:sfu.sql:167: ERROR:  deadlock detected
psql:sfu.sql:168: WARNING:  Message from PostgreSQL backend:
        The Postmaster has informed me that some other backend
        died abnormally and possibly corrupted shared memory.
        I have rolled back the current transaction and am
        going to terminate your database system connection and exit.
        Please reconnect to the database system and repeat your query.
psql:sfu.sql:168: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
psql:sfu.sql:168: connection to server was lost

このメッセージを吐いたクラスタサーバは、pgreplicate.sts にエラーが表示され、
レプリケーションサーバから切り離されます。

切り離された後、参照モードで動作すると想定しておりましたが、
レプリケーションサーバから切り離された状態で、再度クラスタサーバに psql で接続し、
更新系のクエリを投げると psql からの応答が返って来なくなってしまいます。


2 の場合も、1と同様の現象が確認されました。
正常に終了する場合もあるのですが、deadlock detected が表示され、psqlが落ちてしまう場合もあります。


1, 2 の検証を何回か繰り返してみましたが、再現性がありましたので、ご報告させて頂きます。
お手数ですが、ご確認の程、よろしくお願い致します。

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Yusuke Ito <y-110 @ yumemi.co.jp>




pgcluster メーリングリストの案内