[pgsql-jp: 37861] Re: kind mismatch between backends

Hisakazu Nakai nakai @ shinko.co.jp
2006年 12月 26日 (火) 13:33:00 JST


中井です。

ご参加ありがとうございます :-)

ISHIDA Akio wrote:
> こんにちは。石田@苫小牧市です。
> 
> 06/12/26 に Hisakazu Nakai<nakai @ shinko.co.jp> さんは書きました:
>> 中井です。
> (中略)
>>
>>  <* * * * * prepared statement について * * * * *>
>> >>> > >> 2006-12-22 08:37:00 LOG:   pid 22580: statement: DEALLOCATE "S_1"
>> >>> > >> 2006-12-22 08:37:00 LOG:   pid 22580: statement: DEALLOCATE "S_2"
>> >>> > >
>> >>> > > というのがあります.pid 22580はpsqlで接続しているんですよね?この
>> メッセー
>> >>> > > ジはprepared queryが使われたことを示していますが,実際使ってますか?
>> >> >
>> >> > 使っていません。このメッセージは不定期に頻繁に出ています。
>>
>> > 確認ですが,psql以外から接続するときには,このシステムではJavaから接続
>> > するなどして,prepared queryを使うこともあるのでしょうか?
>>
>> プロセスIDからするとコンソールからpsqlで接続しているときのことなので、
>> ありえないような気がします。psqlでセッションを張っている最中に、
>> その pgpool が他のクライアントとセッションを張るということは
>> ないですよね。
> 
> deallocは、新たな接続要求に対して、既存の接続を再利用する
> 時に実行するので、ありえると思います。
> 
> Java等からprepared queryを実行し、その接続を切断した後、
> psqlからの接続要求があったので、pgpoolからPostgreSQL間の
> 接続をリセットした、ということだと思います。

psqlが走っている間は、pgpoolとセッションを開きっぱなしで、
クライアント側とセッションが開きっぱなしのpgpoolプロセスは、
他のクライアントとセッションを張りなおすことが無いと
思っていました。

> それよりちょっと気になったのは、
> replication_timeout = 5000
> で、
> 
> 2006-12-22 08:39:02 ERROR: pid 22580: pool_check_fd: data is not ready
> tp->tv_sec 5 tp->tp_usec 5000000
> 
> という、tp->tp_usecの値がおかしいのですが、
> これはnotimeoutが渡されてtimeoutが初期化されていなかった
> ということでしょうかね。
> 
> だとしたら、タイムアウトがNULLでselectが0を返すことって
> あるんでしょうか。
>
> selectがtimeoutの値を更新するんですね。
> だとしたらこの時点でnotimeoutは0だったということですね。

replication_strict = true なので、デッドロックは監視して
いないかと思うのですが、そうするとこのエラーは何か意味が
出てくるのでしょうか。

-- 
-=-=-=-=  SHINKO ELECTRIC INDUSTRIES CO., LTD.           =-=-=-=-
=-=-=-=-    Research & Development Div.                  -=-=-=-=
-=-=-=-=      Infomation Technology Research Dept.       =-=-=-=-
=-=-=-=-  Name:Hisakazu Nakai          TEL:026-263-3922  -=-=-=-=
-=-=-=-=  Mail:nakai @ shinko.co.jp      FAX:026-263-4562  =-=-=-=-



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