From 23530bcdd36ba7dafbaa7aaf29890dc528d07fad Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Wed, 23 Aug 2023 14:38:38 +1200 Subject: [PATCH 1/3] Remove some obsolete smgrcloseall() calls. Before the advent of PROCSIGNAL_BARRIER_SMGRRELEASE, we didn't have a comprehensive way to deal with Windows file handles that get in the way of unlinking directories. We had smgrcloseall() calls in a few places to try to mitigate. It's still a good idea for bgwriter and checkpointer to do that once per checkpoint so they don't accumulate unbounded SMgrRelation objects, but there is no longer any reason to close them at other random places such as the error path, and the explanation as given in the comments is now obsolete. Discussion: https://postgr.es/m/message-id/CA%2BhUKGJ8NTvqLHz6dqbQnt2c8XCki4r2QvXjBQcXpVwxTY_pvA%40mail.gmail.com --- src/backend/postmaster/bgwriter.c | 7 ------- src/backend/postmaster/checkpointer.c | 7 ------- src/backend/postmaster/walwriter.c | 7 ------- 3 files changed, 21 deletions(-) diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index d02dc17b9c1..e14c88ac060 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -197,13 +197,6 @@ BackgroundWriterMain(void) */ pg_usleep(1000000L); - /* - * Close all open files after any error. This is helpful on Windows, - * where holding deleted files open causes various strange errors. - * It's not clear we need it elsewhere, but shouldn't hurt. - */ - smgrcloseall(); - /* Report wait end here, when there is no further possibility of wait */ pgstat_report_wait_end(); } diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c index 42c807d3528..89ab97bdbc7 100644 --- a/src/backend/postmaster/checkpointer.c +++ b/src/backend/postmaster/checkpointer.c @@ -301,13 +301,6 @@ CheckpointerMain(void) * fast as we can. */ pg_usleep(1000000L); - - /* - * Close all open files after any error. This is helpful on Windows, - * where holding deleted files open causes various strange errors. - * It's not clear we need it elsewhere, but shouldn't hurt. - */ - smgrcloseall(); } /* We can now handle ereport(ERROR) */ diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index 48bc92205b5..8789ffb01d0 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -189,13 +189,6 @@ WalWriterMain(void) * fast as we can. */ pg_usleep(1000000L); - - /* - * Close all open files after any error. This is helpful on Windows, - * where holding deleted files open causes various strange errors. - * It's not clear we need it elsewhere, but shouldn't hurt. - */ - smgrcloseall(); } /* We can now handle ereport(ERROR) */ -- 2.39.2