diff options
-rw-r--r-- | src/backend/postmaster/bgworker.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index 25e61568bd4..0e7a4a53a14 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -863,7 +863,6 @@ BgwHandleStatus WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pidp) { BgwHandleStatus status; - pid_t pid; int rc; bool save_set_latch_on_sigusr1; @@ -874,9 +873,13 @@ WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pidp) { for (;;) { + pid_t pid; + CHECK_FOR_INTERRUPTS(); status = GetBackgroundWorkerPid(handle, &pid); + if (status == BGWH_STARTED) + *pidp = pid; if (status != BGWH_NOT_YET_STARTED) break; @@ -900,6 +903,5 @@ WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pidp) PG_END_TRY(); set_latch_on_sigusr1 = save_set_latch_on_sigusr1; - *pidp = pid; return status; } |