aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/postmaster/bgworker.c6
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;
}