Re: Bugs in TOAST handling, OID assignment and redo recovery - Mailing list pgsql-hackers

From Pavan Deolasee
Subject Re: Bugs in TOAST handling, OID assignment and redo recovery
Date
Msg-id CABOikdPZP5q0EbFibREgCE2PKb8ZRHJGwYHqCDnHkFaKeXDJEQ@mail.gmail.com
Whole thread Raw
In response to Re: Bugs in TOAST handling, OID assignment and redo recovery  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
Responses Re: Bugs in TOAST handling, OID assignment and redo recovery  (Bruce Momjian <bruce@momjian.us>)
Re: Bugs in TOAST handling, OID assignment and redo recovery  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
List pgsql-hackers


On Thu, Apr 12, 2018 at 5:53 AM, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote:
On 4/10/18 06:29, Pavan Deolasee wrote:
> One of our 2ndQuadrant support customers recently reported a sudden rush
> of TOAST errors post a crash recovery, nearly causing an outage. Most
> errors read like this:
>
> ERROR: unexpected chunk number 0 (expected 1) for toast value nnnn

While researching this, I found that the terminology in this code is
quite inconsistent.  It talks about chunks ids, chunk indexes, chunk
numbers, etc. seemingly interchangeably.  The above error is actually
about the chunk_seq, not about the chunk_id, as one might think.

The attached patch is my attempt to clean this up a bit.  Thoughts?

While I agree that we should clean it up, I wonder if changing error text would be a good idea. These errors are being reported by a very long time and if we change the text, we might forget the knowledge about the past reports.

Also, "toast value" is same as "chunk_id". Should we clean up something there too? "chunk_seq number" -- should that be just "chunk_seq"?


Thanks,
Pavan

--
 Pavan Deolasee                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Double-writes, take two?
Next
From: Thomas Munro
Date:
Subject: Re: [HACKERS] PATCH: Keep one postmaster monitoring pipe per process