Re: Race conditions, race conditions! - Mailing list pgsql-hackers

From Qingqing Zhou
Subject Re: Race conditions, race conditions!
Date
Msg-id dcc7ee$7uj$1@news.hub.org
Whole thread Raw
In response to Race conditions, race conditions!  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Race conditions, race conditions!  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
"Tom Lane" <tgl@sss.pgh.pa.us> writes
>
> WARNING:  relation "t1" page 196 is uninitialized --- fixing
> TRAP: FailedAssertion("!((((PageHeader) ((PageHeader)
pageHeader))->pd_upper == 0))", File: "hio.c", Line: 263)
> LOG:  server process (PID 11296) was terminated by signal 6
>

Inspired by this, can we put an asseration here:

--- /*  * lookup the buffer.  IO_IN_PROGRESS is set if the requested  * block is not currently in memory.  */ bufHdr =
BufferAlloc(reln,blockNum, &found);
 

+ /* we are guaranted that nobody else has touched this will-be-new block */
+ Assert(!(found && isExtend));
 if (found)  BufferHitCount++;
---

BufferAlloc() consists of two parts, one is looking for the blockNum, the
other is allocating a free buffer. If the asseration is good, then for
"isExtend", we just need the second part. This could bring marginal
performance benefits.


Regards,
Qingqing




pgsql-hackers by date:

Previous
From: Michael Fuhr
Date:
Subject: Information Schema DBMS VERSION wrong
Next
From: Tom Lane
Date:
Subject: Re: Information Schema DBMS VERSION wrong