]> granicus.if.org Git - postgresql/commit
Add a few entries to the tail of time mapping, to see old values.
authorKevin Grittner <kgrittn@postgresql.org>
Fri, 29 Apr 2016 21:46:08 +0000 (16:46 -0500)
committerKevin Grittner <kgrittn@postgresql.org>
Fri, 29 Apr 2016 21:46:08 +0000 (16:46 -0500)
commit7c3e8039f450eb99b3a73272d0a1661195747d1b
tree584cbac86a2eddbcf78d5c2617cc6179d44d3290
parentd34e7b2812467279b95060a4db8d9f4fc4be0e40
Add a few entries to the tail of time mapping, to see old values.

Without a few entries beyond old_snapshot_threshold, the lookup
would often fail, resulting in the more aggressive pruning or
vacuum being skipped often enough to matter.  This was very clearly
shown by a python test script posted by Ants Aasma, and was likely
a factor in an earlier but somewhat less clear-cut test case posted
by Jeff Janes.

This patch makes no change to the logic, per se -- it just makes
the array of mapping entries big enough to make lookup misses based
on timing much less likely.  An occasional miss is still possible
if a thread stalls for more than 10 minutes, but that does not
create any problem with correctness of behavior.  Besides, if
things are so busy that a thread is stalling for more than 10
minutes, it is probably OK to skip the more aggressive cleanup at
that particular point in time.
src/backend/utils/time/snapmgr.c
src/include/utils/snapmgr.h