Re: Inval reliability, especially for inplace updates

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Alexander Lakhin <exclusion@gmail.com>, Nitin Motiani <nitinmotiani@google.com>, Andres Freund <andres@anarazel.de>, pgsql-hackers@postgresql.org
Date: 2025-05-10T15:14:23Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Update .abi-compliance-history for PrepareToInvalidateCacheTuple().

  2. Assert lack of hazardous buffer locks before possible catalog read.

  3. For inplace update, send nontransactional invalidations.

  4. Update .abi-compliance-history for CacheInvalidateHeapTupleInplace().

  5. Revisit cosmetics of "For inplace update, send nontransactional invalidations."

  6. Correct comments of "Fix data loss at inplace update after heap_update()".

  7. Move I/O before the index_update_stats() buffer lock region.

  8. Revert "For inplace update, send nontransactional invalidations."

  9. Revert "WAL-log inplace update before revealing it to other sessions."

  10. Fix inplace update buffer self-deadlock.

  11. Remove duplicate words in comments

  12. At end of recovery, reset all sinval-managed caches.

  13. Fix data loss at inplace update after heap_update().

  14. Remove comment about xl_heap_inplace "AT END OF STRUCT".

  15. Reduce memory consumption for pending invalidation messages.

  16. Add support for streaming to built-in logical replication.

  17. WAL Log invalidations at command end with wal_level=logical.

  18. Introduce logical decoding.

  19. Rename and document some invalidation routines to make it clearer that

Attachments

On Sun, Nov 03, 2024 at 10:29:25AM -0800, Noah Misch wrote:
> On Fri, Nov 01, 2024 at 04:38:29PM -0700, Noah Misch wrote:
> > This was a near miss to having a worst-in-years regression in a minor release,
> > so I'm proposing this sequence:
> > 
> > - Revert from non-master branches commits 8e7e672 (inplace180, "WAL-log
> >   inplace update before revealing it to other sessions.") and 243e9b4
> >   (inplace160, "For inplace update, send nontransactional invalidations.").
> > 
> > - Back-patch inplace230-index_update_stats-io-before-buflock to harden commit
> >   a07e03f (inplace110, "Fix data loss at inplace update after heap_update()").
> > 
> > - Push attached inplace240 to master.
> > 
> > - Make the commitfest entry a request for review of v17 inplace160+inplace240.
> >   After some amount of additional review and master bake time, the reverted
> >   patches would return to non-master branches.

> Pushed as 0bada39.

> I'm attaching the v17 patch that now becomes the commitfest submission

That still applies cleanly.  I'm adding a back-patch of commit f4ece89, which
adds assertions intended to build confidence about the main patch.  The
commitfest entry requests a review of the first patch only, but the second
patch may answer questions that a review of the first would otherwise raise.