diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index d75feda481..00b1e823af 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -612,7 +612,8 @@ AutoVacLauncherMain(int argc, char *argv[]) /* * Set up our DSA so that backends can install work-item requests. It may - * already exist as created by a previous launcher. + * already exist as created by a previous launcher; and we may even be + * already attached to it, if we're here after longjmp'ing above. */ if (!AutoVacuumShmem->av_dsa_handle) { @@ -626,7 +627,7 @@ AutoVacLauncherMain(int argc, char *argv[]) AutoVacuumShmem->av_workitems = InvalidDsaPointer; LWLockRelease(AutovacuumLock); } - else + else if (AutoVacuumDSA == NULL) { AutoVacuumDSA = dsa_attach(AutoVacuumShmem->av_dsa_handle); dsa_pin_mapping(AutoVacuumDSA);