Re: more autovacuum fixes
От | Alvaro Herrera |
---|---|
Тема | Re: more autovacuum fixes |
Дата | |
Msg-id | 20070619175814.GC21268@alvh.no-ip.org обсуждение исходный текст |
Ответ на | more autovacuum fixes (Alvaro Herrera <alvherre@commandprompt.com>) |
Список | pgsql-patches |
Alvaro Herrera wrote: > One problem with the patch is this (new code): > > bn = (Backend *) malloc(sizeof(Backend)); > ! if (bn) > { > ! bn->pid = StartAutoVacWorker(); > ! bn->is_autovacuum = true; > ! /* we don't need a cancel key */ > > ! if (bn->pid > 0) > ! { > ! /* FIXME -- unchecked memory allocation here */ > ! DLAddHead(BackendList, DLNewElem(bn)); > > > If the palloc() inside DLNewElem fails, we will fail to report a "fork > failure" to the launcher. I am not sure how serious this is. One idea > that came to mind was using a PG_TRY block, sending the signal in the > CATCH block, and then rethrowing the exception. Is this acceptable? I noticed another problem: the worker may fail during BaseInit() or InitProcess(). This is not where most problems will be (that would be later, in InitPostgres(), which is when the worker connects to a DB) but still could cause a starvation problem, I think. Maybe the PG_TRY block is called for in there, as well as the postmaster code. -- Alvaro Herrera http://www.PlanetPostgreSQL.org/ "The ability to monopolize a planet is insignificant next to the power of the source"
В списке pgsql-patches по дате отправления: