diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 327f43bb352..1fd8f9bf9a4 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -1100,13 +1100,30 @@ ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable) !(autovac_pgxact->vacuumFlags & PROC_VACUUM_FOR_WRAPAROUND)) { int pid = autovac->pid; + StringInfoData locktagbuf; + StringInfoData logbuf; /* errdetail for server log */ - elog(DEBUG2, "sending cancel to blocking autovacuum PID %d", - pid); + initStringInfo(&locktagbuf); + initStringInfo(&logbuf); + DescribeLockTag(&locktagbuf, &lock->tag); + appendStringInfo(&logbuf, + _("Process %d waits for %s on %s"), + MyProcPid, + GetLockmodeName(lock->tag.locktag_lockmethodid, + lockmode), + locktagbuf.data); - /* don't hold the lock across the kill() syscall */ + /* release lock as quickly as possible */ LWLockRelease(ProcArrayLock); + ereport(LOG, + (errmsg("sending cancel to blocking autovacuum PID %d", + pid), + errdetail_log("%s", logbuf.data))); + + pfree(logbuf.data); + pfree(locktagbuf.data); + /* send the autovacuum worker Back to Old Kent Road */ if (kill(pid, SIGINT) < 0) {