On Sat, Feb 19, 2022 at 7:28 PM Andres Freund <and...@anarazel.de> wrote: > If the vacuum can get the cleanup lock due to the adversarial patch, the > heap_force_kill() doesn't do anything, because the first item is a > redirect. However if it *can't* get a cleanup lock, heap_force_kill() instead > targets the root item. Triggering the endless loop.
But it shouldn't matter if the root item is an LP_REDIRECT or a normal (not heap-only) tuple with storage. Either way it's the root of a HOT chain. The fact that pg_surgery treats LP_REDIRECT items differently from the other kind of root items is just arbitrary. It seems to have more to do with freezing tuples than killing tuples. -- Peter Geoghegan