2

在未成功迁移到 2.4 版本后,在我的 config.locks 集合中,我有这样的文档:

{
"_id" : "configUpgrade",
"process" : "mongo10:27017:1369289803:1804289383",
"state" : 1,
"ts" : ObjectId("519db44b8436a4e1aa17b0a5"),
"when" : ISODate("2013-05-23T06:16:43.075Z"),
"who" : "mongo10:27017:1369289803:1804289383:mongosMain:846930886",
"why" : "upgrading config database to new format v4"
}

状态1是什么意思?我知道“状态”的有效值为 0,1 和 2。它们各自的含义是什么?

4

2 回答 2

1

http://docs.mongodb.org/manual/reference/config-database/#config.locks状态:

如果 mongos 持有平衡器锁,则 state 字段的值为 2,这意味着平衡器处于活动状态。when 字段指示平衡器何时开始当前操作。

只有通过源代码(https://github.com/mongodb/mongo/blob/master/src/mongo/s/type_locks.h#L231)我才能找出状态 1 的含义:

int _state; // (M) 0: 解锁 | 1:锁定争用| 2:锁定保持

据我了解,这用于升级 MongoDB 2.2 和 2.4 版本之间的锁。

于 2013-07-23T15:07:17.767 回答
1

state 字段中的值表示 mongos 拥有锁。对于 2.0 及更高版本,活动锁的值为 2;对于早期版本,该值为 1。 src:http ://docs.mongodb.org/manual/tutorial/manage-sharded-cluster-balancer/

于 2015-07-23T08:51:53.583 回答