Re: Interruptible sleeps (was Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers!)
От | Tom Lane |
---|---|
Тема | Re: Interruptible sleeps (was Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers!) |
Дата | |
Msg-id | 10392.1283479688@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Interruptible sleeps (was Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers!) (Fujii Masao <masao.fujii@gmail.com>) |
Ответы |
Re: Interruptible sleeps (was Re: CommitFest 2009-07: Yay,
Kevin! Thanks, reviewers!)
|
Список | pgsql-hackers |
Fujii Masao <masao.fujii@gmail.com> writes: >> + * XXX: Is it safe to elog(ERROR) in a signal handler? >> >> No, it isn't. > We should use elog(FATAL) or check proc_exit_inprogress, instead? elog(FATAL) is *certainly* not a better idea. I think there's really nothing that can be done, you just have to silently ignore the error. BTW, if we retry, there had probably better be a limit on how many times to retry ... > + if (errno != EAGAIN && errno != EWOULDBLOCK) > + { > + /* > + * XXX: Is it safe to elog(ERROR) in a signal handler? > + */ > + elog(ERROR, "write() on self-pipe failed: %m"); > + } > + if (errno == EINTR) > + goto retry; > "errno == EINTR)" seems to be never checked. Another issue with coding like that is that it supposes elog() won't change errno. regards, tom lane
В списке pgsql-hackers по дате отправления: