diff --git a/src/backend/postmaster/datachecksum_state.c b/src/backend/postmaster/datachecksum_state.c index 099a6b4fe2e..e2b673a96b5 100644 --- a/src/backend/postmaster/datachecksum_state.c +++ b/src/backend/postmaster/datachecksum_state.c @@ -1156,8 +1156,9 @@ launcher_exit(int code, Datum arg) SetDataChecksumsOff(); LWLockAcquire(DataChecksumsWorkerLock, LW_EXCLUSIVE); + if (launcher_running) + DataChecksumState->launcher_running = false; launcher_running = false; - DataChecksumState->launcher_running = false; LWLockRelease(DataChecksumsWorkerLock); } @@ -1388,6 +1389,13 @@ done: operation = DataChecksumState->launch_operation; DataChecksumState->cost_delay = DataChecksumState->launch_cost_delay; DataChecksumState->cost_limit = DataChecksumState->launch_cost_limit; + + /* + * If the user started, but aborted processing, and then changed their + * mind again before we had time to exit we need to clear the abort + * flag. + */ + abort_requested = false; LWLockRelease(DataChecksumsWorkerLock); goto again; }