Обсуждение: [COMMITTERS] pgsql: Notify bgworker registrant after freeing worker slot.

Поиск
Список
Период
Сортировка

[COMMITTERS] pgsql: Notify bgworker registrant after freeing worker slot.

От
Robert Haas
Дата:
Notify bgworker registrant after freeing worker slot.

Tom Lane observed buildfarm failures caused by the select_parallel
regression test trying to launch new parallel queries before the
worker slots used by the previous ones were freed.  Try to fix this by
having the postmaster free the worker slots before it sends the
SIGUSR1 notifications to the registering process.  This doesn't
completely eliminate the possibility that the user backend might
(correctly) observe the worker as dead before the slot is free, but I
believe it should make the window significantly narrower.

Patch by me, per complaint from Tom Lane.  Reviewed by Amit Kapila.

Discussion: http://postgr.es/m/30673.1487310734@sss.pgh.pa.us

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/aea5d298362e881b13d95a48c5ae116879237389

Modified Files
--------------
src/backend/postmaster/bgworker.c           | 33 +++++++++++++++++++++++++++++
src/backend/postmaster/postmaster.c         |  6 +++---
src/include/postmaster/bgworker_internals.h |  1 +
3 files changed, 37 insertions(+), 3 deletions(-)


Re: [COMMITTERS] pgsql: Notify bgworker registrant after freeingworker slot.

От
Amit Kapila
Дата:
On Fri, Mar 3, 2017 at 9:27 AM, Robert Haas <rhaas@postgresql.org> wrote:
> Notify bgworker registrant after freeing worker slot.
>

After this commit, I am seeing parallel queires being stucked on my
windows machine.  I think the notify pid is stale in
ReportBackgroundWorkerExit() as we are freeing the same in
ForgetBackgroundWorker().  Attached patch fixes the problem for me.

Ashutosh Sharma has independently reported (offlist) this problem to me.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Вложения

Re: [COMMITTERS] pgsql: Notify bgworker registrant after freeingworker slot.

От
Robert Haas
Дата:
On Mon, Mar 6, 2017 at 8:21 AM, Amit Kapila <amit.kapila16@gmail.com> wrote:
> On Fri, Mar 3, 2017 at 9:27 AM, Robert Haas <rhaas@postgresql.org> wrote:
>> Notify bgworker registrant after freeing worker slot.
>
> After this commit, I am seeing parallel queires being stucked on my
> windows machine.  I think the notify pid is stale in
> ReportBackgroundWorkerExit() as we are freeing the same in
> ForgetBackgroundWorker().  Attached patch fixes the problem for me.
>
> Ashutosh Sharma has independently reported (offlist) this problem to me.

Thanks for the report and patch.  Committed.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: [COMMITTERS] pgsql: Notify bgworker registrant after freeing worker slot.

От
Tom Lane
Дата:
Robert Haas <robertmhaas@gmail.com> writes:
> On Mon, Mar 6, 2017 at 8:21 AM, Amit Kapila <amit.kapila16@gmail.com> wrote:
>> On Fri, Mar 3, 2017 at 9:27 AM, Robert Haas <rhaas@postgresql.org> wrote:
>>> Notify bgworker registrant after freeing worker slot.

>> After this commit, I am seeing parallel queires being stucked on my
>> windows machine.  I think the notify pid is stale in
>> ReportBackgroundWorkerExit() as we are freeing the same in
>> ForgetBackgroundWorker().  Attached patch fixes the problem for me.
>> Ashutosh Sharma has independently reported (offlist) this problem to me.

> Thanks for the report and patch.  Committed.

Hmm, maybe this also explains skink's recent failure in the
select_parallel test.  I was going to go try to duplicate that, but
now maybe I'll just wait to see if its next run is green.

            regards, tom lane