- 
    Type:Bug 
- 
    Resolution: Done
- 
    Priority:Major - P3 
- 
    None
- 
    Affects Version/s: 4.4.18
- 
    Component/s: None
- 
        ALL
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
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"
                        }
                }
        }
})