On Wed, Apr 26, 2023 at 03:07:18PM +0300, Aleksander Alekseev wrote: > The commit message may require a bit of tweaking by the committer but > other than that the patch seems to be fine. I'm going to mark it as > RfC in a bit unless anyone objects.
In v4, I've introduced a new BGW_LIBLEN macro and set it to the default value of MAXPGPATH (1024). This way, the value can live in bgworker.h like the other BGW_* macros do. Plus, this should make the assertion that checks for backward compatibility unnecessary. Since bgw_library_name is essentially a path, I can see the argument that we should just set BGW_LIBLEN to MAXPGPATH directly. I'm curious what folks think about this. I also changed the added sizeofs to use the macro for consistency with the surrounding code. -- Nathan Bossart Amazon Web Services: https://aws.amazon.com
>From 3760f8efd0a20f60f7eda19450f97c5b2e5daf8f Mon Sep 17 00:00:00 2001 From: Nathan Bossart <nat...@postgresql.org> Date: Fri, 30 Jun 2023 14:25:20 -0700 Subject: [PATCH v4 1/1] extend bgw_library_name --- doc/src/sgml/bgworker.sgml | 2 +- src/backend/postmaster/bgworker.c | 2 +- src/backend/replication/logical/launcher.c | 4 ++-- src/include/postmaster/bgworker.h | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/bgworker.sgml b/doc/src/sgml/bgworker.sgml index 7ba5da27e5..f890216333 100644 --- a/doc/src/sgml/bgworker.sgml +++ b/doc/src/sgml/bgworker.sgml @@ -59,7 +59,7 @@ typedef struct BackgroundWorker int bgw_flags; BgWorkerStartTime bgw_start_time; int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ - char bgw_library_name[BGW_MAXLEN]; + char bgw_library_name[BGW_LIBLEN]; char bgw_function_name[BGW_MAXLEN]; Datum bgw_main_arg; char bgw_extra[BGW_EXTRALEN]; diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index 0dd22b2351..bee2b895e3 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -362,7 +362,7 @@ BackgroundWorkerStateChange(bool allow_new_workers) ascii_safe_strlcpy(rw->rw_worker.bgw_type, slot->worker.bgw_type, BGW_MAXLEN); ascii_safe_strlcpy(rw->rw_worker.bgw_library_name, - slot->worker.bgw_library_name, BGW_MAXLEN); + slot->worker.bgw_library_name, BGW_LIBLEN); ascii_safe_strlcpy(rw->rw_worker.bgw_function_name, slot->worker.bgw_function_name, BGW_MAXLEN); diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c index 8395ae7b23..e1ed820b31 100644 --- a/src/backend/replication/logical/launcher.c +++ b/src/backend/replication/logical/launcher.c @@ -456,7 +456,7 @@ retry: bgw.bgw_flags = BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION; bgw.bgw_start_time = BgWorkerStart_RecoveryFinished; - snprintf(bgw.bgw_library_name, BGW_MAXLEN, "postgres"); + snprintf(bgw.bgw_library_name, BGW_LIBLEN, "postgres"); if (is_parallel_apply_worker) snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ParallelApplyWorkerMain"); @@ -910,7 +910,7 @@ ApplyLauncherRegister(void) bgw.bgw_flags = BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION; bgw.bgw_start_time = BgWorkerStart_RecoveryFinished; - snprintf(bgw.bgw_library_name, BGW_MAXLEN, "postgres"); + snprintf(bgw.bgw_library_name, BGW_LIBLEN, "postgres"); snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ApplyLauncherMain"); snprintf(bgw.bgw_name, BGW_MAXLEN, "logical replication launcher"); diff --git a/src/include/postmaster/bgworker.h b/src/include/postmaster/bgworker.h index 845d4498e6..f8c401093e 100644 --- a/src/include/postmaster/bgworker.h +++ b/src/include/postmaster/bgworker.h @@ -84,6 +84,7 @@ typedef enum #define BGW_DEFAULT_RESTART_INTERVAL 60 #define BGW_NEVER_RESTART -1 #define BGW_MAXLEN 96 +#define BGW_LIBLEN 1024 #define BGW_EXTRALEN 128 typedef struct BackgroundWorker @@ -93,7 +94,7 @@ typedef struct BackgroundWorker int bgw_flags; BgWorkerStartTime bgw_start_time; int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ - char bgw_library_name[BGW_MAXLEN]; + char bgw_library_name[BGW_LIBLEN]; char bgw_function_name[BGW_MAXLEN]; Datum bgw_main_arg; char bgw_extra[BGW_EXTRALEN]; -- 2.25.1