[pgsql-jp: 34161] Re: pgpoolのリードエラーについて
Kenichirou Kimura (木村健一郎)
kimura @ project-com.com
2004年 10月 26日 (火) 17:06:36 JST
木村です。
At Tue, 26 Oct 2004 16:19:44 +0900,
> > > ERROR: pid 3254: pool_check_fd: data is not ready tp->tv_sec 0
> > > tp->tp_usec 0
> >
> > このメッセージが出たときのタイミングを教えてください.要は,tp->tv_sec
> > 0かつtp->tp_usec 0になるのはおかしいので,どういうときにこうなるのか知
> > りたいのです.
> >
>
ここに便乗してなんですが、このメッセージを出してる該当部分のコードが以
下のようになってますが(in pool_process_query.c)
fds = select(fd+1, &readmask, NULL, &exceptmask, tp);
if (fds == -1)
{
if (errno == EAGAIN || errno == EINTR)
continue;
pool_error("pool_check_fd: select() failed. reason %s", strerror(errno));
break;
}
if (FD_ISSET(fd, &exceptmask))
{
pool_error("pool_check_fd: exception occurred");
break;
}
if (fds == 0)
{
pool_error("pool_check_fd: data is not ready tp->tv_sec %d tp->tp_usec %d", tp->tv_sec, tp->tv_usec);
break;
}
selectから帰ってきたときのtpの値って、未定義と見なすべきという話だった
ように思います(Linuxだと実装が違うんですけど)。
参考:
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/select.2.html
とはいえselectの返り値であるfdsが0にはなってるので、エラーの原因は別の
所にありそうですね。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
木村健一郎
pgsql-jp メーリングリストの案内