Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers!
От | Tom Lane |
---|---|
Тема | Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers! |
Дата | |
Msg-id | 20775.1282238337@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers! (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Ответы |
Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers!
|
Список | pgsql-hackers |
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes: > On 19/08/10 19:57, Tom Lane wrote: >> Hmm, but couldn't you still do that inside pg_usleep? Signal handlers >> that do that couldn't know if they were interrupting a sleep per se, >> so this would have to be a backend-wide convention. > I don't understand, do what inside pg_usleep()? I was envisioning still using pg_usleep, and having this interaction between signal handlers and the delay be private to pg_usleep, rather than putting such ugly code into forty-nine different places. There are a *lot* of places where we have loops that break down delays into at-most-one-second pg_usleep calls, and if we're going to have a hack like this we should fix them all, not just two or three that SR cares about. But I'm still not seeing how this self-pipe hack avoids a race condition. If the signal handler is sending a byte whenever it executes, then you could have bytes already stacked up in the pipe from previous interrupts that didn't happen to come while inside pg_usleep. If you clear those before sleeping, you have a race condition, and if you don't, then you fail to sleep the intended amount of time even though there was no interrupt this time. regards, tom lane
В списке pgsql-hackers по дате отправления: