mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Avoid useless ReplicationOriginExitCleanup locking
When session_replication_state is NULL, we can know there's nothing to do with no lock acquisition. Do that. Author: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> Discussion: https://postgr.es/m/CALj2ACX+YaeRU5xJqR4C7kLsTO_F7DBRNF8WgeHvJZcKtNuK_A@mail.gmail.com
This commit is contained in:
parent
31acee4b66
commit
aa817c7496
@ -172,9 +172,10 @@ static ReplicationState *replication_states;
|
|||||||
static ReplicationStateCtl *replication_states_ctl;
|
static ReplicationStateCtl *replication_states_ctl;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Backend-local, cached element from ReplicationState for use in a backend
|
* We keep a pointer to this backend's ReplicationState to avoid having to
|
||||||
* replaying remote commits, so we don't have to search ReplicationState for
|
* search the replication_states array in replorigin_session_advance for each
|
||||||
* the backends current RepOriginId.
|
* remote commit. (Ownership of a backend's own entry can only be changed by
|
||||||
|
* that backend.)
|
||||||
*/
|
*/
|
||||||
static ReplicationState *session_replication_state = NULL;
|
static ReplicationState *session_replication_state = NULL;
|
||||||
|
|
||||||
@ -1056,10 +1057,12 @@ ReplicationOriginExitCleanup(int code, Datum arg)
|
|||||||
{
|
{
|
||||||
ConditionVariable *cv = NULL;
|
ConditionVariable *cv = NULL;
|
||||||
|
|
||||||
|
if (session_replication_state == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
LWLockAcquire(ReplicationOriginLock, LW_EXCLUSIVE);
|
LWLockAcquire(ReplicationOriginLock, LW_EXCLUSIVE);
|
||||||
|
|
||||||
if (session_replication_state != NULL &&
|
if (session_replication_state->acquired_by == MyProcPid)
|
||||||
session_replication_state->acquired_by == MyProcPid)
|
|
||||||
{
|
{
|
||||||
cv = &session_replication_state->origin_cv;
|
cv = &session_replication_state->origin_cv;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user