Details
-
Bug
-
Resolution: Done
-
Major - P3
-
None
-
4.4.18
-
None
-
ALL
Description
hello:
from doc:
https://www.mongodb.com/docs/v4.4/reference/write-concern/#causally-consistent-sessions-and-write-concerns
w: "majority" Behavior
Starting in MongoDB 4.4, replica set members in the STARTUP2 state do not participate in write majorities.
but i test,i find that STARTUP2 state still participate in write majorities.
i'm psa replication.when i add new node to it. the new node state is startup2.
but replication writableVotingMembersCount from 2 to 3.
so i insert data with writeConcern that is hang or timeout.
the follwoing is my test:
shard1:PRIMARY> rs.status();
{
|
"set" : "shard1",
|
"date" : ISODate("2022-11-21T05:02:51.701Z"),
|
"myState" : 1,
|
"term" : NumberLong(2),
|
"syncSourceHost" : "",
|
"syncSourceId" : -1,
|
"heartbeatIntervalMillis" : NumberLong(2000),
|
"majorityVoteCount" : 2,
|
"writeMajorityCount" : 2,
|
"votingMembersCount" : 3,
|
"writableVotingMembersCount" : 2,
|
|
|
|
|
"members" : [
|
{
|
"_id" : 0,
|
"name" : "100.130.10.149:41001",
|
"health" : 1,
|
"state" : 2,
|
"stateStr" : "SECONDARY",
|
"uptime" : 200,
|
"optime" : {
|
"ts" : Timestamp(1669006964, 1),
|
"t" : NumberLong(2)
|
},
|
"optimeDurable" : {
|
"ts" : Timestamp(1669006964, 1),
|
"t" : NumberLong(2)
|
},
|
"optimeDate" : ISODate("2022-11-21T05:02:44Z"),
|
"optimeDurableDate" : ISODate("2022-11-21T05:02:44Z"),
|
"lastHeartbeat" : ISODate("2022-11-21T05:02:50.799Z"),
|
"lastHeartbeatRecv" : ISODate("2022-11-21T05:02:49.782Z"),
|
"pingMs" : NumberLong(0),
|
"lastHeartbeatMessage" : "",
|
"syncSourceHost" : "100.130.9.150:41001",
|
"syncSourceId" : 1,
|
"infoMessage" : "",
|
"configVersion" : 1,
|
"configTerm" : 2
|
},
|
{
|
"_id" : 1,
|
"name" : "100.130.9.150:41001",
|
"health" : 1,
|
"state" : 1,
|
"stateStr" : "PRIMARY",
|
"uptime" : 5797,
|
"optime" : {
|
"ts" : Timestamp(1669006964, 1),
|
"t" : NumberLong(2)
|
},
|
"optimeDate" : ISODate("2022-11-21T05:02:44Z"),
|
"syncSourceHost" : "",
|
"syncSourceId" : -1,
|
"infoMessage" : "",
|
"electionTime" : Timestamp(1669005454, 1),
|
"electionDate" : ISODate("2022-11-21T04:37:34Z"),
|
"configVersion" : 1,
|
"configTerm" : 2,
|
"self" : true,
|
"lastHeartbeatMessage" : ""
|
},
|
{
|
"_id" : 2,
|
"name" : "100.130.10.150:41001",
|
"health" : 1,
|
"state" : 7,
|
"stateStr" : "ARBITER",
|
"uptime" : 5399,
|
"lastHeartbeat" : ISODate("2022-11-21T05:02:50.151Z"),
|
"lastHeartbeatRecv" : ISODate("2022-11-21T05:02:50.159Z"),
|
"pingMs" : NumberLong(0),
|
"lastHeartbeatMessage" : "",
|
"syncSourceHost" : "",
|
"syncSourceId" : -1,
|
"infoMessage" : "",
|
"configVersion" : 1,
|
"configTerm" : 2
|
}
|
],
|
"ok" : 1,
|
"$clusterTime" : {
|
"clusterTime" : Timestamp(1669006964, 1),
|
"signature" : {
|
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
|
"keyId" : NumberLong(0)
|
}
|
},
|
"operationTime" : Timestamp(1669006964, 1)
|
}
|
|
|
|
|
shard1:PRIMARY> rs.printSlaveReplicationInfo()
|
source: 100.130.10.149:41001
|
syncedTo: Mon Nov 21 2022 13:03:54 GMT+0800 (CST)
|
0 secs (0 hrs) behind the primary
|
|
|
shard1:PRIMARY> db.POCCOLL.insert({_id:1,name:"testWriteConcern"},{writeConcern:{w:"majority",wtimeout:5000}})
|
WriteResult({ "nInserted" : 1 })
|
|
|
|
|
shard1:PRIMARY> rs.add("100.130.9.149:41001")
|
{
|
"ok" : 1,
|
"$clusterTime" : {
|
"clusterTime" : Timestamp(1669007243, 1),
|
"signature" : {
|
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
|
"keyId" : NumberLong(0)
|
}
|
},
|
"operationTime" : Timestamp(1669007243, 1)
|
}
|
shard1:PRIMARY> rs.printSlaveReplicationInfo()
|
source: 100.130.10.149:41001
|
syncedTo: Mon Nov 21 2022 13:07:23 GMT+0800 (CST)
|
0 secs (0 hrs) behind the primary
|
source: 100.130.9.149:41001
|
syncedTo: Thu Jan 01 1970 08:00:00 GMT+0800 (CST)
|
1669007243 secs (463613.12 hrs) behind the primary
|
|
|
|
|
shard1:PRIMARY> rs.status();
|
{
|
"set" : "shard1",
|
"date" : ISODate("2022-11-21T05:07:36.186Z"),
|
"myState" : 1,
|
"term" : NumberLong(2),
|
"syncSourceHost" : "",
|
"syncSourceId" : -1,
|
"heartbeatIntervalMillis" : NumberLong(2000),
|
"majorityVoteCount" : 3,
|
"writeMajorityCount" : 3,
|
"votingMembersCount" : 4,
|
"writableVotingMembersCount" : 3,
|
"members" : [
|
{
|
"_id" : 0,
|
"name" : "100.130.10.149:41001",
|
"health" : 1,
|
"state" : 2,
|
"stateStr" : "SECONDARY",
|
"uptime" : 485,
|
"optime" : {
|
"ts" : Timestamp(1669007254, 1),
|
"t" : NumberLong(2)
|
},
|
"optimeDurable" : {
|
"ts" : Timestamp(1669007254, 1),
|
"t" : NumberLong(2)
|
},
|
"optimeDate" : ISODate("2022-11-21T05:07:34Z"),
|
"optimeDurableDate" : ISODate("2022-11-21T05:07:34Z"),
|
"lastHeartbeat" : ISODate("2022-11-21T05:07:35.802Z"),
|
"lastHeartbeatRecv" : ISODate("2022-11-21T05:07:35.807Z"),
|
"pingMs" : NumberLong(0),
|
"lastHeartbeatMessage" : "",
|
"syncSourceHost" : "100.130.9.150:41001",
|
"syncSourceId" : 1,
|
"infoMessage" : "",
|
"configVersion" : 2,
|
"configTerm" : 2
|
},
|
{
|
"_id" : 1,
|
"name" : "100.130.9.150:41001",
|
"health" : 1,
|
"state" : 1,
|
"stateStr" : "PRIMARY",
|
"uptime" : 6082,
|
"optime" : {
|
"ts" : Timestamp(1669007254, 1),
|
"t" : NumberLong(2)
|
},
|
"optimeDate" : ISODate("2022-11-21T05:07:34Z"),
|
"syncSourceHost" : "",
|
"syncSourceId" : -1,
|
"infoMessage" : "",
|
"electionTime" : Timestamp(1669005454, 1),
|
"electionDate" : ISODate("2022-11-21T04:37:34Z"),
|
"configVersion" : 2,
|
"configTerm" : 2,
|
"self" : true,
|
"lastHeartbeatMessage" : ""
|
},
|
{
|
"_id" : 2,
|
"name" : "100.130.10.150:41001",
|
"health" : 1,
|
"state" : 7,
|
"stateStr" : "ARBITER",
|
"uptime" : 5684,
|
"lastHeartbeat" : ISODate("2022-11-21T05:07:35.802Z"),
|
"lastHeartbeatRecv" : ISODate("2022-11-21T05:07:35.805Z"),
|
"pingMs" : NumberLong(0),
|
"lastHeartbeatMessage" : "",
|
"syncSourceHost" : "",
|
"syncSourceId" : -1,
|
"infoMessage" : "",
|
"configVersion" : 2,
|
"configTerm" : 2
|
},
|
{
|
"_id" : 3,
|
"name" : "100.130.9.149:41001",
|
"health" : 1,
|
"state" : 5,
|
"stateStr" : "STARTUP2",
|
"uptime" : 12,
|
"optime" : {
|
"ts" : Timestamp(0, 0),
|
"t" : NumberLong(-1)
|
},
|
"optimeDurable" : {
|
"ts" : Timestamp(0, 0),
|
"t" : NumberLong(-1)
|
},
|
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
|
"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
|
"lastHeartbeat" : ISODate("2022-11-21T05:07:35.813Z"),
|
"lastHeartbeatRecv" : ISODate("2022-11-21T05:07:35.327Z"),
|
"pingMs" : NumberLong(0),
|
"lastHeartbeatMessage" : "",
|
"syncSourceHost" : "100.130.9.150:41001",
|
"syncSourceId" : 1,
|
"infoMessage" : "",
|
"configVersion" : 2,
|
"configTerm" : 2
|
}
|
],
|
}
|
so now i insert data again ,startup2 state participate in write majorities.
so it is bug for it or other reason?
shard1:PRIMARY> db.POCCOLL.insert({_id:3,name:"testWriteConcern"},{writeConcern:{w:"majority",wtimeout:5000}})
|
WriteResult({
|
"nInserted" : 1,
|
"writeConcernError" : {
|
"code" : 64,
|
"codeName" : "WriteConcernFailed",
|
"errmsg" : "waiting for replication timed out",
|
"errInfo" : {
|
"wtimeout" : true,
|
"writeConcern" : {
|
"w" : "majority",
|
"wtimeout" : 5000,
|
"provenance" : "clientSupplied"
|
}
|
}
|
}
|
})
|