From d063658d6d233d838429677bdb82dae053492d08 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Mon, 6 Nov 2017 09:49:32 -0800 Subject: [PATCH] Protect some initializations from being called during backend startup. On EXEC_BACKEND builds these functions shouldn't be called at every backend start. --- src/backend/distributed/shared_library_init.c | 7 ++++++- src/backend/distributed/transaction/backend_data.c | 5 ++++- src/backend/distributed/utils/maintenanced.c | 5 ++++- src/backend/distributed/worker/task_tracker.c | 11 ++++++++--- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/backend/distributed/shared_library_init.c b/src/backend/distributed/shared_library_init.c index 5cc4bc79d..1d2922a25 100644 --- a/src/backend/distributed/shared_library_init.c +++ b/src/backend/distributed/shared_library_init.c @@ -170,8 +170,13 @@ _PG_init(void) /* * Extend the database directory structure before continuing with * initialization - one of the later steps might require them to exist. + * If in a sub-process (windows / EXEC_BACKEND) this already has been + * done. */ - CreateRequiredDirectories(); + if (!IsUnderPostmaster) + { + CreateRequiredDirectories(); + } /* * Register Citus configuration variables. Do so before intercepting diff --git a/src/backend/distributed/transaction/backend_data.c b/src/backend/distributed/transaction/backend_data.c index 7356f1cf9..70c08ca8f 100644 --- a/src/backend/distributed/transaction/backend_data.c +++ b/src/backend/distributed/transaction/backend_data.c @@ -297,7 +297,10 @@ void InitializeBackendManagement(void) { /* allocate shared memory */ - RequestAddinShmemSpace(BackendManagementShmemSize()); + if (!IsUnderPostmaster) + { + RequestAddinShmemSpace(BackendManagementShmemSize()); + } prev_shmem_startup_hook = shmem_startup_hook; shmem_startup_hook = BackendManagementShmemInit; diff --git a/src/backend/distributed/utils/maintenanced.c b/src/backend/distributed/utils/maintenanced.c index f2e1a2bd8..17c35a08d 100644 --- a/src/backend/distributed/utils/maintenanced.c +++ b/src/backend/distributed/utils/maintenanced.c @@ -107,7 +107,10 @@ static bool LockCitusExtension(void); void InitializeMaintenanceDaemon(void) { - RequestAddinShmemSpace(MaintenanceDaemonShmemSize()); + if (!IsUnderPostmaster) + { + RequestAddinShmemSpace(MaintenanceDaemonShmemSize()); + } prev_shmem_startup_hook = shmem_startup_hook; shmem_startup_hook = MaintenanceDaemonShmemInit; diff --git a/src/backend/distributed/worker/task_tracker.c b/src/backend/distributed/worker/task_tracker.c index 48a6ec6c5..d5dfe89fe 100644 --- a/src/backend/distributed/worker/task_tracker.c +++ b/src/backend/distributed/worker/task_tracker.c @@ -100,12 +100,17 @@ TaskTrackerRegister(void) { BackgroundWorker worker; - /* organize and register initialization of required shared memory */ - RequestAddinShmemSpace(TaskTrackerShmemSize()); - prev_shmem_startup_hook = shmem_startup_hook; shmem_startup_hook = TaskTrackerShmemInit; + if (IsUnderPostmaster) + { + return; + } + + /* organize and register initialization of required shared memory */ + RequestAddinShmemSpace(TaskTrackerShmemSize()); + /* and that the task tracker is started as background worker */ memset(&worker, 0, sizeof(worker)); worker.bgw_flags = BGWORKER_SHMEM_ACCESS;