[pgcluster: 621] Re: トランザクション中にレプリケーションサーバが落ちると、クライアントが固まる

mitani mitani @ sraw.co.jp
2004年 12月 15日 (水) 10:59:23 JST


三谷@広島です.
沖縄セミナーまでの2週間,無茶をしたせいか,昨日は1日くたばっておりました.

> SQLを実行中にレプリケーションサーバのpgreplicateを落とすと、
> クライアントプログラムが固まり、プロンプトが返ってきません.
> DBD,DBIの問題なのか、PgCluster側の問題なのか切り分けがつかず、
> 投稿いたしました.
psqlで繋いでSQLを実行した場合はどうですか.
# 手元の環境では問題なくレプリケーションサーバが切り替わるようですが...

> DBD::Pg::st execute failed: ERROR:  replication server should be down, transacti
> on aborted. at ./test.pl 
これはクラスタDBが吐いているエラーですね.

>         $DB_CON = DBI->connect("DBI:Pg:dbname=test;host=localhost;",
>                                "test", "test",
>                                {'RaiseError' => 0, AutoCommit => 0});
これはautocommitをoffにしているのでしょうか?
autocommitをoffにするとcommitされるまではトランザクションの内部とみなし
てレプリケーションします.
トランザクション中にレプリケーションサーバを停止するとタイミングによって
は,トランザクションがアボートするものとコミットするものが混在してしまう
場合があります.(この問題は次バージョンの1.1で解決していますが,現バージョ
ンにはその機能はありません)

autocommitをonにして試して貰えませんでしょうか.

=============================
三谷 篤<mitani @ sraw.co.jp>
=============================




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