Re: SIGUSR1 pingpong between master na autovacum launcher causes crash
От | Alvaro Herrera |
---|---|
Тема | Re: SIGUSR1 pingpong between master na autovacum launcher causes crash |
Дата | |
Msg-id | 20090821194014.GK5487@alvh.no-ip.org обсуждение исходный текст |
Ответ на | SIGUSR1 pingpong between master na autovacum launcher causes crash (Zdenek Kotala <Zdenek.Kotala@Sun.COM>) |
Ответы |
Re: SIGUSR1 pingpong between master na autovacum launcher
causes crash
Re: SIGUSR1 pingpong between master na autovacum launcher causes crash |
Список | pgsql-hackers |
Zdenek Kotala wrote: > The problem what I see here is that StartAutovacuumWorker() fails and > send SIGUSR1 to the postmaster, but it send it too quickly and signal > handler is still active. When signal mask is unblocked in > sigusr1_handler() than signal handler is run again... > > The reason why StartAutovacuumWorker() is interesting. Log says: > > LOG: could not fork autovacuum worker process: Not enough space Does this mean that the machine is out of swap space? > It is strange and I don't understand it. May be too many nested signal > handlers call could cause it. > > Strange also is that 100ms is not enough to protect this situation, but > I think that sleep could interrupted by signal. > > My suggestion is to set for example gotUSR1=true in sigusr1_handler() > and in the server loop check if we got a USR1 signal. It avoids any > problems with signal handler which is not currently POSIX compliant > anyway. What 100ms? The pg_usleep call you see in ServerLoop is only there during shutdown; normally it would be the select() call that would be blocking the process. If sigusr1_handler needs rewriting, don't all the other sighandler as well? Note that the process is supposed to be running with signals blocked all the time except during those sleep/select calls, which is what (according to comments) let the sighandlers do nontrivial tasks. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc.
В списке pgsql-hackers по дате отправления: