Re: parallel mode and parallel contexts
От | Amit Kapila |
---|---|
Тема | Re: parallel mode and parallel contexts |
Дата | |
Msg-id | CAA4eK1K8mZ+B1pSUhaij9G0bSUSKhwuWy6cCvx17ZEYup16MLg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: parallel mode and parallel contexts (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: parallel mode and parallel contexts
|
Список | pgsql-hackers |
On Sat, Jan 17, 2015 at 3:40 AM, Robert Haas <robertmhaas@gmail.com> wrote:
>
> New patch attached. I'm going to take the risk of calling this v1
> (previous versions have been 0.x), since I've now done something about
> the heavyweight locking issue, as well as fixed the message-looping
> bug Amit pointed out. It doubtless needs more work, but it's starting
> to smell a bit more like a real patch.
>
>
> New patch attached. I'm going to take the risk of calling this v1
> (previous versions have been 0.x), since I've now done something about
> the heavyweight locking issue, as well as fixed the message-looping
> bug Amit pointed out. It doubtless needs more work, but it's starting
> to smell a bit more like a real patch.
>
I need some clarification regarding below code:
+BgwHandleStatus
+WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *handle)
+{
+ BgwHandleStatus
status;
+ int rc;
+ bool save_set_latch_on_sigusr1;
+
+
save_set_latch_on_sigusr1 = set_latch_on_sigusr1;
+ set_latch_on_sigusr1 = true;
+
+ PG_TRY();
+ {
+
for (;;)
+ {
+ pid_t pid;
+
+
CHECK_FOR_INTERRUPTS();
+
+ status = GetBackgroundWorkerPid(handle, &pid);
+
if (status == BGWH_STOPPED)
+ return status;
+
+ rc =
WaitLatch(&MyProc->procLatch,
+ WL_LATCH_SET |
WL_POSTMASTER_DEATH, 0);
+
+ if (rc & WL_POSTMASTER_DEATH)
+
return BGWH_POSTMASTER_DIED;
It seems this code has possibility to wait forever.
Assume one of the worker is not able to start (not able to attach
to shared memory or some other reason), then status returned by
GetBackgroundWorkerPid() will be BGWH_NOT_YET_STARTED
and after that it can wait forever in WaitLatch.
В списке pgsql-hackers по дате отправления: