@@ -58,7 +58,6 @@ WaitLSNShmemInit(void)
58
58
& found );
59
59
if (!found )
60
60
{
61
- SpinLockInit (& waitLSN -> waitersHeapMutex );
62
61
pg_atomic_init_u64 (& waitLSN -> minWaitedLSN , PG_UINT64_MAX );
63
62
pairingheap_initialize (& waitLSN -> waitersHeap , lsn_cmp , NULL );
64
63
memset (& waitLSN -> procInfos , 0 , MaxBackends * sizeof (WaitLSNProcInfo ));
@@ -115,13 +114,13 @@ addLSNWaiter(XLogRecPtr lsn)
115
114
procInfo -> procnum = MyProcNumber ;
116
115
procInfo -> waitLSN = lsn ;
117
116
118
- SpinLockAcquire ( & waitLSN -> waitersHeapMutex );
117
+ LWLockAcquire ( WaitLSNLock , LW_EXCLUSIVE );
119
118
120
119
pairingheap_add (& waitLSN -> waitersHeap , & procInfo -> phNode );
121
120
procInfo -> inHeap = true;
122
121
updateMinWaitedLSN ();
123
122
124
- SpinLockRelease ( & waitLSN -> waitersHeapMutex );
123
+ LWLockRelease ( WaitLSNLock );
125
124
}
126
125
127
126
/*
@@ -132,19 +131,19 @@ deleteLSNWaiter(void)
132
131
{
133
132
WaitLSNProcInfo * procInfo = & waitLSN -> procInfos [MyProcNumber ];
134
133
135
- SpinLockAcquire ( & waitLSN -> waitersHeapMutex );
134
+ LWLockAcquire ( WaitLSNLock , LW_EXCLUSIVE );
136
135
137
136
if (!procInfo -> inHeap )
138
137
{
139
- SpinLockRelease ( & waitLSN -> waitersHeapMutex );
138
+ LWLockRelease ( WaitLSNLock );
140
139
return ;
141
140
}
142
141
143
142
pairingheap_remove (& waitLSN -> waitersHeap , & procInfo -> phNode );
144
143
procInfo -> inHeap = false;
145
144
updateMinWaitedLSN ();
146
145
147
- SpinLockRelease ( & waitLSN -> waitersHeapMutex );
146
+ LWLockRelease ( WaitLSNLock );
148
147
}
149
148
150
149
/*
@@ -160,7 +159,7 @@ WaitLSNSetLatches(XLogRecPtr currentLSN)
160
159
161
160
wakeUpProcNums = palloc (sizeof (int ) * MaxBackends );
162
161
163
- SpinLockAcquire ( & waitLSN -> waitersHeapMutex );
162
+ LWLockAcquire ( WaitLSNLock , LW_EXCLUSIVE );
164
163
165
164
/*
166
165
* Iterate the pairing heap of waiting processes till we find LSN not yet
@@ -182,7 +181,7 @@ WaitLSNSetLatches(XLogRecPtr currentLSN)
182
181
183
182
updateMinWaitedLSN ();
184
183
185
- SpinLockRelease ( & waitLSN -> waitersHeapMutex );
184
+ LWLockRelease ( WaitLSNLock );
186
185
187
186
/*
188
187
* Set latches for processes, whose waited LSNs are already replayed. This
0 commit comments