summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2007-09-11 17:15:55 +0000
committerTom Lane2007-09-11 17:15:55 +0000
commit5e6378e220cbfd02aed5b8e7aacc8a82c6e91d4b (patch)
tree08cb10b2b5a199ce82d30b0db0811d8874180254
parent125603f4bd009dba5348be4b976cd7a13c7da294 (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.c1
-rw-r--r--src/backend/postmaster/bgwriter.c1
-rw-r--r--src/backend/postmaster/walwriter.c4
3 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 121d40b0ac..97a0509175 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -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 c919870a56..d8ecd8569c 100644
--- a/src/backend/postmaster/bgwriter.c
+++ b/src/backend/postmaster/bgwriter.c
@@ -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 c4fbd6ffb3..000597ed72 100644
--- a/src/backend/postmaster/walwriter.c
+++ b/src/backend/postmaster/walwriter.c
@@ -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