On Thu, Apr 2, 2020 at 11:28 AM Peter Geoghegan <p...@bowt.ie> wrote: > In conclusion, I share Andres' concerns here. There are glaring > problems with how we manipulate the data structure that controls the > effective horizon for pruning. Maybe they can be fixed while leaving > the code that manages the OldSnapshotControl circular buffer in > something resembling its current form, but I doubt it. In my opinion, > there is no approach to fixing "snapshot too old" that won't have some > serious downside.
I'll add something that might be constructive: It would probably be a good idea to introduce a function like syncrep.c's SyncRepQueueIsOrderedByLSN() function, which is designed to be called by assertions only. That would both clearly document and actually verify the circular buffer/OldSnapshotControl data structure's invariants. -- Peter Geoghegan