diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-10-16 18:57:26 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-10-16 18:57:26 +0000 |
commit | fdd13f156814f81732c188788ab1b7b14c59f4da (patch) | |
tree | 2ca797d2b320de27c01ec61f5480558a05c27f4d /src/backend/storage/buffer/localbuf.c | |
parent | 1c2de4774620469375e6393fbdbcdaffb0c2d0b5 (diff) | |
download | postgresql-fdd13f156814f81732c188788ab1b7b14c59f4da.tar.gz postgresql-fdd13f156814f81732c188788ab1b7b14c59f4da.zip |
Give the ResourceOwner mechanism full responsibility for releasing buffer
pins at end of transaction, and reduce AtEOXact_Buffers to an Assert
cross-check that this was done correctly. When not USE_ASSERT_CHECKING,
AtEOXact_Buffers is a complete no-op. This gets rid of an O(NBuffers)
bottleneck during transaction commit/abort, which recent testing has shown
becomes significant above a few tens of thousands of shared buffers.
Diffstat (limited to 'src/backend/storage/buffer/localbuf.c')
-rw-r--r-- | src/backend/storage/buffer/localbuf.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index 6ccc18ddad3..4df6befcacf 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/localbuf.c,v 1.59 2004/08/29 05:06:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/localbuf.c,v 1.60 2004/10/16 18:57:24 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -232,23 +232,12 @@ InitLocalBuffer(void) void AtEOXact_LocalBuffers(bool isCommit) { +#ifdef USE_ASSERT_CHECKING int i; for (i = 0; i < NLocBuffer; i++) { - if (LocalRefCount[i] != 0) - { - BufferDesc *buf = &(LocalBufferDescriptors[i]); - - if (isCommit) - elog(WARNING, - "local buffer leak: [%03d] (rel=%u/%u/%u, blockNum=%u, flags=0x%x, refcount=%u %d)", - i, - buf->tag.rnode.spcNode, buf->tag.rnode.dbNode, - buf->tag.rnode.relNode, buf->tag.blockNum, buf->flags, - buf->refcount, LocalRefCount[i]); - - LocalRefCount[i] = 0; - } + Assert(LocalRefCount[i] == 0); } +#endif } |