@@ -99,6 +99,7 @@ CfsState* cfs_state;
99
99
100
100
static bool cfs_gc_stop ;
101
101
static int cfs_gc_processed_segments ;
102
+ static bool got_SIGHUP = false;
102
103
103
104
104
105
/* ----------------------------------------------------------------
@@ -1228,16 +1229,21 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
1228
1229
}
1229
1230
pg_atomic_fetch_sub_u32 (& cfs_state -> n_active_gc , 1 );
1230
1231
1231
- if (cfs_gc_delay != 0 && performed && background == CFS_BACKGROUND )
1232
+ if (background == CFS_BACKGROUND )
1232
1233
{
1233
1234
int rc = WaitLatch (MyLatch ,
1234
1235
WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH ,
1235
- cfs_gc_delay /* ms */ );
1236
+ performed ? cfs_gc_delay : 0 /* ms */ );
1236
1237
if (rc & WL_POSTMASTER_DEATH )
1237
1238
exit (1 );
1238
1239
1239
1240
ResetLatch (MyLatch );
1240
1241
CHECK_FOR_INTERRUPTS ();
1242
+ if (got_SIGHUP )
1243
+ {
1244
+ got_SIGHUP = false;
1245
+ ProcessConfigFile (PGC_SIGHUP );
1246
+ }
1241
1247
}
1242
1248
return succeed ;
1243
1249
}
@@ -1295,6 +1301,16 @@ static void cfs_gc_cancel(int sig)
1295
1301
cfs_gc_stop = true;
1296
1302
}
1297
1303
1304
+ static void cfs_sighup (SIGNAL_ARGS )
1305
+ {
1306
+ int save_errno = errno ;
1307
+
1308
+ got_SIGHUP = true;
1309
+ SetLatch (MyLatch );
1310
+
1311
+ errno = save_errno ;
1312
+ }
1313
+
1298
1314
/*
1299
1315
* Now compression can be applied only to the tablespace
1300
1316
* in general, so gc workers traverse pg_tblspc directory.
@@ -1311,6 +1327,7 @@ static void cfs_gc_bgworker_main(Datum arg)
1311
1327
pqsignal (SIGINT , cfs_gc_cancel );
1312
1328
pqsignal (SIGQUIT , cfs_gc_cancel );
1313
1329
pqsignal (SIGTERM , cfs_gc_cancel );
1330
+ pqsignal (SIGHUP , cfs_sighup );
1314
1331
1315
1332
/* We're now ready to receive signals */
1316
1333
BackgroundWorkerUnblockSignals ();
@@ -1338,6 +1355,11 @@ static void cfs_gc_bgworker_main(Datum arg)
1338
1355
1339
1356
ResetLatch (MyLatch );
1340
1357
CHECK_FOR_INTERRUPTS ();
1358
+ if (got_SIGHUP )
1359
+ {
1360
+ got_SIGHUP = false;
1361
+ ProcessConfigFile (PGC_SIGHUP );
1362
+ }
1341
1363
}
1342
1364
}
1343
1365
0 commit comments