| From: | Michael Paquier <michael(at)paquier(dot)xyz> |
|---|---|
| To: | Antonin Houska <ah(at)cybertec(dot)at> |
| Cc: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: MarkBufferDirtyHint() and LSN update |
| Date: | 2019-11-14 03:01:29 |
| Message-ID: | 20191114030129.GA1910@paquier.xyz |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Wed, Nov 13, 2019 at 09:17:03PM +0900, Michael Paquier wrote:
> Actually, no, this is not good. I have been studying more the patch,
> and after stressing more this code path with a cluster having
> checksums enabled and shared_buffers at 1MB, I have been able to make
> a couple of page's LSNs go backwards with pgbench -s 100. The cause
> was simply that the page got flushed with a newer LSN than what was
> returned by XLogSaveBufferForHint() before taking the buffer header
> lock, so updating only the LSN for a non-dirty page was simply
> guarding against that.
for the reference attached is the trick I have used, adding an extra
assertion check in PageSetLSN().
--
Michael
| Attachment | Content-Type | Size |
|---|---|---|
| page-setlsn-trick.patch | text/x-diff | 629 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Michael Paquier | 2019-11-14 03:38:43 | Re: [PATCH] use separate PartitionedRelOptions structure to store partitioned table options |
| Previous Message | Andres Freund | 2019-11-14 01:55:12 | Re: Ought to use heap_multi_insert() for pg_attribute/depend insertions? |