[pgpool-general-jp: 378] pgpool-II 2.0.1 : difference of the number of update tuples

Jun Kuriyama kuriyama+ml @ s2factory.co.jp
2008年 2月 16日 (土) 10:54:07 JST


 pgpool-II 2.0.1 を FreeBSD で運用しています (replication_mode =
true, load_balance_mode = false, master_slave_mode = false,
parallel_mode = false)。

 最近二回ほど、pgpool プロセスが刺さってしまう状況になりました。プロ
セス自体は存在するのですが、telnet localhost 9999 してもつなげない状態
です。

% telnet localhost 9999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> close
Connection closed.

 まだ原因や引き金などはわかっていないのですが、次に発生した時に何かわ
かるかなと思い -d オプションをつけて起動して運用しているところです。

# これはこれで、もし「こういうことを試してみたらどうか」というのがあれ
# ば教えてください。


 で、それに関連するのですが、そのあと pgpool を再起動するととりあえず
起動するのですが、その時に 2.0 で導入された

> - Abort a transaction if INSERT, UPDATE and DELETE reports
>   different number of result rows(Yoshiyuki)
>
>   x=# update t set a = a + 1;
>   ERROR:  pgpool detected difference of the number of update tuples
>   HINT:  check data consistency between master and other db node

にひっかかってしまう状態になりました。これもデータベース領域を同期させ
て再起動することで問題なく動いています。

 ここで要望なのですが、手動での同期前の状態では、上記の difference of
the number of update tuples は、おそらく整合性が崩れている状態かと思い
ますので、同じ UPDATE 文を引き続き投げても同じ結果となります。
 実用上このままだと DB が機能しない状態なので、

 A) transaction abort ではなく、縮退運転に入る
 B) もしくはデフォルトでは既存の挙動で、オプションで A) のような動作と
    する

ような形になっているといいかな、と思いました。

 現状 pcp で縮退状態などを監視はしているのですが、現状で上記の状態を
見つけようとすると、おそらく pcp 層だけではダメで、アプリケーション層
か PostgreSQL のログをチェックしたり、ということが必要になってきてしま
うかなあ、と思いまして。

# いや、単にそれが面倒なだけなんですけどね……。


-- 
Jun Kuriyama <kuriyama @ s2factory.co.jp> // S2 Factory, Inc.


pgpool-general-jp メーリングリストの案内