We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see ourdocumentation.
There was an error while loading.Please reload this page.
1 parent00bdad3 commite6c7509Copy full SHA for e6c7509
multimaster.c
@@ -317,19 +317,22 @@ void MtmLock(LWLockMode mode)
317
atexit(MtmReleaseLocks);
318
MtmAtExitHookRegistered= true;
319
}
320
-if (mode==LW_EXCLUSIVE||MtmLockCount!=0) {
321
-if (MtmLockCount++!=0) {
322
-Assert(Mtm->lastLockHolder==MyProcPid);
323
-return;
324
-}
+if (MtmLockCount!=0) {
+Assert(Mtm->lastLockHolder==MyProcPid);
+MtmLockCount+=1;
+return;
325
326
start=MtmGetSystemTime();
327
LWLockAcquire((LWLockId)&Mtm->locks[MTM_STATE_LOCK_ID],mode);
328
stop=MtmGetSystemTime();
329
if (stop>start+MSEC_TO_USEC(MtmHeartbeatSendTimeout)) {
330
MTM_LOG1("%d: obtaining %s lock takes %lld microseconds",MyProcPid, (mode==LW_EXCLUSIVE ?"exclusive" :"shared"),stop-start);
331
332
-Mtm->lastLockHolder=MyProcPid;
+if (mode==LW_EXCLUSIVE) {
+Assert(MtmLockCount==0);
333
+Mtm->lastLockHolder=MyProcPid;
334
+MtmLockCount=1;
335
+}
336
337
338
voidMtmUnlock(void)