db.config.locks集合中的状态1是什么意思?



在我的配置。迁移到2.4版本失败后,我有这样的文档:

{
"_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是什么意思?我知道"state"的有效值是0,1和2。每一个都是什么意思?

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

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

如果一个mongos持有balancer锁,state字段的值为2,表示balancer处于活动状态。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版本之间的锁。

最新更新