Heikki Linnakangas <hlinnakangas@vmware.com> writes:
> On 06.06.2013 17:00, Heikki Linnakangas wrote:
>> A more workable idea is to sprinkle checks in higher-level code, before
>> you hold any critical locks, to check that there is enough preallocated
>> WAL. Like, at the beginning of heap_insert, heap_update, etc., and all
>> similar indexam entry points.
> Actually, there's one place that catches most of these: LockBuffer(...,
> BUFFER_LOCK_EXCLUSIVE). In all heap and index operations, you always
> grab an exclusive lock on a page first, before entering the critical
> section where you call XLogInsert.
Not only is that a horrible layering/modularity violation, but surely
LockBuffer can have no idea how much WAL space will be needed.
regards, tom lane