diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-09-11 17:15:33 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-09-11 17:15:33 +0000 |
commit | f181f9e1e49b1546d7e42b43a04487dfc6f73690 (patch) | |
tree | 7f62f2fb4cdc5506c03cb3c069e7075a1a1d755e /src | |
parent | 5cf785a4de1fd393983da8888ae0ece3a0945e9c (diff) | |
download | postgresql-f181f9e1e49b1546d7e42b43a04487dfc6f73690.tar.gz postgresql-f181f9e1e49b1546d7e42b43a04487dfc6f73690.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/postmaster/autovacuum.c | 3 | ||||
-rw-r--r-- | src/backend/postmaster/bgwriter.c | 3 | ||||
-rw-r--r-- | src/backend/postmaster/walwriter.c | 6 |
3 files changed, 9 insertions, 3 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 7b6da97b57b..2a6e654269e 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 d8c7c3aa13b..81f48c01fbf 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 b4d594661a2..d5736b7e694 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 |