Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit936711f

Browse files
committed
Change cluster locking policy
1 parentb130956 commit936711f

File tree

11 files changed

+184
-100
lines changed

11 files changed

+184
-100
lines changed

‎contrib/mmts/arbiter.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,11 @@ static void MtmSetSocketOptions(int sd)
320320

321321
staticvoidMtmCheckResponse(MtmArbiterMessage*resp)
322322
{
323+
if (resp->lockReq) {
324+
BIT_SET(Mtm->globalLockerMask,resp->node-1);
325+
}else {
326+
BIT_CLEAR(Mtm->globalLockerMask,resp->node-1);
327+
}
323328
if (BIT_CHECK(resp->disabledNodeMask,MtmNodeId-1)
324329
&& !BIT_CHECK(Mtm->disabledNodeMask,resp->node-1)
325330
&&Mtm->status!=MTM_RECOVERY
@@ -358,6 +363,7 @@ static void MtmSendHeartbeat()
358363
msg.disabledNodeMask=Mtm->disabledNodeMask;
359364
msg.connectivityMask=SELF_CONNECTIVITY_MASK;
360365
msg.oldestSnapshot=Mtm->nodes[MtmNodeId-1].oldestSnapshot;
366+
msg.lockReq=Mtm->nodeLockerMask!=0;
361367
msg.node=MtmNodeId;
362368
msg.csn=now;
363369
if (last_sent_heartbeat!=0&&last_sent_heartbeat+MSEC_TO_USEC(MtmHeartbeatSendTimeout)*2<now) {
@@ -1073,6 +1079,7 @@ static void MtmReceiver(Datum arg)
10731079
StartTransactionCommand();
10741080
SetPreparedTransactionState(ts->gid,MULTIMASTER_PRECOMMITTED);
10751081
CommitTransactionCommand();
1082+
Assert(!MtmTransIsActive());
10761083
MtmLock(LW_EXCLUSIVE);
10771084
}else {
10781085
ts->status=TRANSACTION_STATUS_UNKNOWN;
@@ -1088,7 +1095,7 @@ static void MtmReceiver(Datum arg)
10881095
continue;
10891096
}
10901097
if (ts->status!=TRANSACTION_STATUS_ABORTED) {
1091-
MTM_LOG1("Arbiter receive abort message for transaction %s (%llu)",ts->gid, (long64)ts->xid);
1098+
MTM_LOG1("Arbiter receive abort message for transaction %s (%llu) from node %d",ts->gid, (long64)ts->xid,node);
10921099
Assert(ts->status==TRANSACTION_STATUS_IN_PROGRESS);
10931100
MtmAbortTransaction(ts);
10941101
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp