Skip to content

Commit

Permalink
Process shared_preload_libraries in single-user mode.
Browse files Browse the repository at this point in the history
Without processing shared_preload_libraries, it's impossible to
recover if custom WAL resource managers are needed. It may also pose a
problem running VACUUM on a table with a custom AM, if the module
implementing the AM is expecting to be loaded by
shared_preload_libraries.

The reason this wasn't done before was just the general principle to
do fewer things in single-user mode. But it's easy enough to just set
shared_preload_libraries to empty, for the same effect.

Discussion: https://postgr.es/m/9decc18a42634f8a2f15c97a385a0f51a752f396.camel%40j-davis.com
Reviewed-by: Tom Lane, Andres Freund
Backpatch-through: 15
  • Loading branch information
jeff-davis committed Jul 20, 2022
1 parent 2d04277 commit 6c31ac0
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/backend/tcop/postgres.c
Expand Up @@ -3933,9 +3933,32 @@ PostgresSingleUserMain(int argc, char *argv[],
/* read control file (error checking and contains config ) */
LocalProcessControlFile(false);

/*
* process any libraries that should be preloaded at postmaster start
*/
process_shared_preload_libraries();

/* Initialize MaxBackends */
InitializeMaxBackends();

/*
* Give preloaded libraries a chance to request additional shared memory.
*/
process_shmem_requests();

/*
* Now that loadable modules have had their chance to request additional
* shared memory, determine the value of any runtime-computed GUCs that
* depend on the amount of shared memory required.
*/
InitializeShmemGUCs();

/*
* Now that modules have been loaded, we can process any custom resource
* managers specified in the wal_consistency_checking GUC.
*/
InitializeWalConsistencyChecking();

CreateSharedMemoryAndSemaphores();

/*
Expand Down

0 comments on commit 6c31ac0

Please sign in to comment.