Commit 49967da6 authored by Andres Freund's avatar Andres Freund

Make vacuum a bit more verbose to debug BF failure.

This is temporary. While possibly some more error checking / debugging
in this path would be a good thing, it'll not look exactly like this.

Discussion: https://postgr.es/m/20200816181604.l54m6kss5ntd6xow@alap3.anarazel.de
parent 676a9c3c
...@@ -6048,7 +6048,16 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask, ...@@ -6048,7 +6048,16 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
TransactionIdIsInProgress(members[i].xid)) TransactionIdIsInProgress(members[i].xid))
{ {
/* running locker cannot possibly be older than the cutoff */ /* running locker cannot possibly be older than the cutoff */
Assert(!TransactionIdPrecedes(members[i].xid, cutoff_xid)); if (TransactionIdPrecedes(members[i].xid, cutoff_xid))
{
/* temporary on-bf debugging */
elog(PANIC, "too old alive locker: multi: %u, member xid: %u, memb-current: %d, memb-progress: %d, cutoff: %u, cutoff-multi: %u, relfrozenxid: %u, relminmxid: %u",
multi, members[i].xid,
TransactionIdIsCurrentTransactionId(members[i].xid),
TransactionIdIsInProgress(members[i].xid),
cutoff_xid, cutoff_multi,
relfrozenxid, relminmxid);
}
newmembers[nnewmembers++] = members[i]; newmembers[nnewmembers++] = members[i];
has_lockers = true; has_lockers = true;
} }
......
...@@ -1350,7 +1350,14 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, ...@@ -1350,7 +1350,14 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats,
if (HeapTupleIsHotUpdated(&tuple) || if (HeapTupleIsHotUpdated(&tuple) ||
HeapTupleIsHeapOnly(&tuple) || HeapTupleIsHeapOnly(&tuple) ||
params->index_cleanup == VACOPT_TERNARY_DISABLED) params->index_cleanup == VACOPT_TERNARY_DISABLED)
{
/* temporary on-bf debugging */
elog(LOG, "treating dead HOT tuple (updated %d, heap only: %d, index cleanup: %d) as alive",
HeapTupleIsHotUpdated(&tuple), HeapTupleIsHeapOnly(&tuple),
params->index_cleanup == VACOPT_TERNARY_DISABLED);
nkeep += 1; nkeep += 1;
}
else else
tupgone = true; /* we can delete the tuple */ tupgone = true; /* we can delete the tuple */
all_visible = false; all_visible = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment