Re: GIN, XLogInsert and MarkBufferDirty - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: GIN, XLogInsert and MarkBufferDirty
Date
Msg-id 46658056.5060303@enterprisedb.com
Whole thread Raw
In response to Re: GIN, XLogInsert and MarkBufferDirty  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Tom Lane wrote:
> Heikki Linnakangas <heikki@enterprisedb.com> writes:
>> ... MarkBufferDirty needs to be called 
>> before XLogInsert to avoid a race condition in checkpoint, see comments 
>> in SyncOneBuffer in bufmgr.c for an explanation.
> 
> Right, see also the "Write-Ahead Log coding" section in
> src/backend/access/transam/README (which is maybe not a very good place
> for it, but it doesn't seem like bufmgr's turf either).

Yeah it could be documented more visibly, I didn't know about (or didn't 
remember) that rule until I saw that comment today. I found that issue 
in GIN by just quickly grepping for callers of MarkBufferDirty.

How about adding an Assert to XLogInsert to check that all buffers given 
to it are already marked as dirty? It wouldn't be completely 
water-tight, sometimes we don't pass the buffer to XLogInsert even 
though we stamp the LSN, but it would catch most cases.


--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [HACHERS] privilege check: column level only?
Next
From: Tom Lane
Date:
Subject: Re: libpq and Binary Data Formats