File tree Expand file tree Collapse file tree 1 file changed +18
-2
lines changed
src/backend/storage/buffer Expand file tree Collapse file tree 1 file changed +18
-2
lines changed Original file line number Diff line number Diff line change 8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.159 2004/02/12 15:06:56 wieck Exp $
11
+ * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.160 2004/02/12 20:07:26 tgl Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -943,6 +943,7 @@ BufferBackgroundWriter(void)
943
943
for (;;)
944
944
{
945
945
int n ;
946
+ long udelay ;
946
947
947
948
/*
948
949
* Call BufferSync() with instructions to keep just the
@@ -970,8 +971,23 @@ BufferBackgroundWriter(void)
970
971
/*
971
972
* Nap for the configured time or sleep for 10 seconds if
972
973
* there was nothing to do at all.
974
+ *
975
+ * On some platforms, signals won't interrupt the sleep. To ensure
976
+ * we respond reasonably promptly when the postmaster signals us,
977
+ * break down the sleep into 1-second increments, and check for
978
+ * interrupts after each nap.
973
979
*/
974
- pg_usleep ((n > 0 ) ? BgWriterDelay * 1000L : 10000000L );
980
+ udelay = ((n > 0 ) ? BgWriterDelay : 10000 ) * 1000L ;
981
+ while (udelay > 1000000L )
982
+ {
983
+ pg_usleep (1000000L );
984
+ udelay -= 1000000L ;
985
+ if (InterruptPending )
986
+ return ;
987
+ }
988
+ pg_usleep (udelay );
989
+ if (InterruptPending )
990
+ return ;
975
991
}
976
992
}
977
993
You can’t perform that action at this time.
0 commit comments