Skip to content

Commit 8f9dbbc

Browse files
author
Sokolov Yura
committed
cfs: reload configuration in background worker.
1 parent 84d010f commit 8f9dbbc

File tree

1 file changed

+24
-2
lines changed
  • src/backend/storage/file

1 file changed

+24
-2
lines changed

src/backend/storage/file/cfs.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ CfsState* cfs_state;
9999

100100
static bool cfs_gc_stop;
101101
static int cfs_gc_processed_segments;
102+
static bool got_SIGHUP = false;
102103

103104

104105
/* ----------------------------------------------------------------
@@ -1228,16 +1229,21 @@ static bool cfs_gc_file(char* map_path, GC_CALL_KIND background)
12281229
}
12291230
pg_atomic_fetch_sub_u32(&cfs_state->n_active_gc, 1);
12301231

1231-
if (cfs_gc_delay != 0 && performed && background == CFS_BACKGROUND)
1232+
if (background == CFS_BACKGROUND)
12321233
{
12331234
int rc = WaitLatch(MyLatch,
12341235
WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH,
1235-
cfs_gc_delay /* ms */ );
1236+
performed ? cfs_gc_delay : 0 /* ms */ );
12361237
if (rc & WL_POSTMASTER_DEATH)
12371238
exit(1);
12381239

12391240
ResetLatch(MyLatch);
12401241
CHECK_FOR_INTERRUPTS();
1242+
if (got_SIGHUP)
1243+
{
1244+
got_SIGHUP = false;
1245+
ProcessConfigFile(PGC_SIGHUP);
1246+
}
12411247
}
12421248
return succeed;
12431249
}
@@ -1295,6 +1301,16 @@ static void cfs_gc_cancel(int sig)
12951301
cfs_gc_stop = true;
12961302
}
12971303

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+
12981314
/*
12991315
* Now compression can be applied only to the tablespace
13001316
* in general, so gc workers traverse pg_tblspc directory.
@@ -1311,6 +1327,7 @@ static void cfs_gc_bgworker_main(Datum arg)
13111327
pqsignal(SIGINT, cfs_gc_cancel);
13121328
pqsignal(SIGQUIT, cfs_gc_cancel);
13131329
pqsignal(SIGTERM, cfs_gc_cancel);
1330+
pqsignal(SIGHUP, cfs_sighup);
13141331

13151332
/* We're now ready to receive signals */
13161333
BackgroundWorkerUnblockSignals();
@@ -1338,6 +1355,11 @@ static void cfs_gc_bgworker_main(Datum arg)
13381355

13391356
ResetLatch(MyLatch);
13401357
CHECK_FOR_INTERRUPTS();
1358+
if (got_SIGHUP)
1359+
{
1360+
got_SIGHUP = false;
1361+
ProcessConfigFile(PGC_SIGHUP);
1362+
}
13411363
}
13421364
}
13431365

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy