mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-23 07:06:30 +00:00
shared library: update for PostgreSQL 15
Core commit 4f2400cb3f adds shmem_request_hook, meaning the memory initialization previously carried out in _PG_init() needs to be handled in that hook.
This commit is contained in:
48
repmgr.c
48
repmgr.c
@@ -80,11 +80,17 @@ typedef struct repmgrdSharedState
|
||||
|
||||
static repmgrdSharedState *shared_state = NULL;
|
||||
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
static shmem_request_hook_type prev_shmem_request_hook = NULL;
|
||||
#endif
|
||||
static shmem_startup_hook_type prev_shmem_startup_hook = NULL;
|
||||
|
||||
|
||||
void _PG_init(void);
|
||||
void _PG_fini(void);
|
||||
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
static void repmgr_shmem_request(void);
|
||||
#endif
|
||||
static void repmgr_shmem_startup(void);
|
||||
|
||||
PG_FUNCTION_INFO_V1(repmgr_set_local_node_id);
|
||||
@@ -116,24 +122,62 @@ _PG_init(void)
|
||||
if (!process_shared_preload_libraries_in_progress)
|
||||
return;
|
||||
|
||||
#if (PG_VERSION_NUM < 150000)
|
||||
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
||||
|
||||
#if (PG_VERSION_NUM >= 90600)
|
||||
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
||||
#else
|
||||
RequestAddinLWLocks(1);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Install hooks.
|
||||
*/
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
prev_shmem_request_hook = shmem_request_hook;
|
||||
shmem_request_hook = repmgr_shmem_request;
|
||||
#endif
|
||||
|
||||
prev_shmem_startup_hook = shmem_startup_hook;
|
||||
shmem_startup_hook = repmgr_shmem_startup;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* shmem_startup hook: allocate or attach to shared memory,
|
||||
* Module unload callback
|
||||
*/
|
||||
void
|
||||
_PG_fini(void)
|
||||
{
|
||||
/* Uninstall hook */
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
shmem_request_hook = prev_shmem_request_hook;
|
||||
#endif
|
||||
|
||||
shmem_startup_hook = prev_shmem_startup_hook;
|
||||
}
|
||||
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
/*
|
||||
* shmem_requst_hook: request shared memory
|
||||
*/
|
||||
static void
|
||||
repmgr_shmem_request(void)
|
||||
{
|
||||
if (prev_shmem_request_hook)
|
||||
prev_shmem_request_hook();
|
||||
|
||||
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
||||
|
||||
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* shmem_startup hook: allocate or attach to shared memory
|
||||
*/
|
||||
static void
|
||||
repmgr_shmem_startup(void)
|
||||
|
||||
Reference in New Issue
Block a user