From: Andres Freund Date: Tue, 8 Sep 2020 18:25:34 +0000 (-0700) Subject: Fix autovacuum cancellation. X-Git-Tag: REL_14_BETA1~1691 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5871f09c98588acd486a31d7bb7bd084a6553a39;p=thirdparty%2Fpostgresql.git Fix autovacuum cancellation. The problem is caused by me (Andres) having ProcSleep() look at the wrong PGPROC entry in 5788e258bb2. Unfortunately it seems hard to write a reliable test for autovacuum cancellations. Perhaps somebody will come up with a good approach, but it seems worth fixing the issue even without a test. Reported-By: Jeff Janes Author: Jeff Janes Discussion: https://postgr.es/m/CAMkU=1wH2aUy+wDRDz+5RZALdcUnEofV1t9PzXS_gBJO9vZZ0Q@mail.gmail.com --- diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index aa9fbd80545..19a9f939492 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -1318,7 +1318,7 @@ ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable) * Only do it if the worker is not working to protect against Xid * wraparound. */ - vacuumFlags = ProcGlobal->vacuumFlags[proc->pgxactoff]; + vacuumFlags = ProcGlobal->vacuumFlags[autovac->pgxactoff]; if ((vacuumFlags & PROC_IS_AUTOVACUUM) && !(vacuumFlags & PROC_VACUUM_FOR_WRAPAROUND)) {