summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2007-09-11 17:15:33 +0000
committerTom Lane2007-09-11 17:15:33 +0000
commitf181f9e1e49b1546d7e42b43a04487dfc6f73690 (patch)
tree7f62f2fb4cdc5506c03cb3c069e7075a1a1d755e
parent5cf785a4de1fd393983da8888ae0ece3a0945e9c (diff)
Make sure that open hash table scans are cleaned up when bgwriter tries to
recover from elog(ERROR). Problem was created by introduction of hash seq search tracking awhile back, and affects all branches that have bgwriter; in HEAD the disease has snuck into autovacuum and walwriter too. (Not sure that the latter two use hash_seq_search at the moment, but surely they might someday.) Per report from Sergey Koposov.
-rw-r--r--src/backend/postmaster/autovacuum.c3
-rw-r--r--src/backend/postmaster/bgwriter.c3
-rw-r--r--src/backend/postmaster/walwriter.c6
3 files changed, 9 insertions, 3 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 7b6da97b57..2a6e654269 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -55,7 +55,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.56 2007/08/02 23:39:44 adunstan Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.57 2007/09/11 17:15:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -472,6 +472,7 @@ AutoVacLauncherMain(int argc, char *argv[])
*/
LWLockReleaseAll();
AtEOXact_Files();
+ AtEOXact_HashTables(false);
/*
* Now return to normal top-level context and clear ErrorContext for
diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c
index d8c7c3aa13..81f48c01fb 100644
--- a/src/backend/postmaster/bgwriter.c
+++ b/src/backend/postmaster/bgwriter.c
@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.41 2007/07/03 14:51:24 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.42 2007/09/11 17:15:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -295,6 +295,7 @@ BackgroundWriterMain(void)
/* we needn't bother with the other ResourceOwnerRelease phases */
AtEOXact_Buffers(false);
AtEOXact_Files();
+ AtEOXact_HashTables(false);
/* Warn any waiting backends that the checkpoint failed. */
if (ckpt_active)
diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c
index b4d594661a..d5736b7e69 100644
--- a/src/backend/postmaster/walwriter.c
+++ b/src/backend/postmaster/walwriter.c
@@ -34,7 +34,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/postmaster/walwriter.c,v 1.1 2007/07/24 04:54:09 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/walwriter.c,v 1.2 2007/09/11 17:15:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -50,11 +50,13 @@
#include "miscadmin.h"
#include "postmaster/walwriter.h"
#include "storage/bufmgr.h"
+#include "storage/fd.h"
#include "storage/ipc.h"
#include "storage/lwlock.h"
#include "storage/pmsignal.h"
#include "storage/smgr.h"
#include "utils/guc.h"
+#include "utils/hsearch.h"
#include "utils/memutils.h"
#include "utils/resowner.h"
@@ -179,6 +181,8 @@ WalWriterMain(void)
false, true);
/* we needn't bother with the other ResourceOwnerRelease phases */
AtEOXact_Buffers(false);
+ AtEOXact_Files();
+ AtEOXact_HashTables(false);
/*
* Now return to normal top-level context and clear ErrorContext for