aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/buffer/localbuf.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-10-16 18:57:26 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-10-16 18:57:26 +0000
commitfdd13f156814f81732c188788ab1b7b14c59f4da (patch)
tree2ca797d2b320de27c01ec61f5480558a05c27f4d /src/backend/storage/buffer/localbuf.c
parent1c2de4774620469375e6393fbdbcdaffb0c2d0b5 (diff)
downloadpostgresql-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.c19
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
}