Add a few entries to the tail of time mapping, to see old values.
Kevin Grittner <kgrittn@postgresql.org>
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.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/time/snapmgr.c | modified | +13 −13 |
| src/include/utils/snapmgr.h | modified | +13 −0 |