【NoSQL】mongo_detail.pyにおけるイコライザ情報の処理構想
【ToolsForMongo】mongo_detail.pyにおけるイコライザ情報の処理構想
いくつかの典型的な状況の
1.mongosを作成した後、balancerが設定されていない場合:
2.mongosを作成した後、理由によりbalancerを手動で閉じた
3.balancerの実行期間が設定されていますが、現在の時間はありません.
4.balancerの実行期間が設定され、現在の時間が設定されている
公式mongo shellのjsコードを見てみましょう
1.configDBがデフォルトのconfigライブラリでない場合を先に処理
2.
3.戻り値の.stopped項目を反転し、実行中かどうかを取得
いくつかの典型的な状況の
db.settings.find({'_id':'balancer'})
出力を見てみましょう.1.mongosを作成した後、balancerが設定されていない場合:
mongos> var x = db.settings.findOne({'_id':'balancer'})
mongos> x == null
true
mongos> sh.getBalancerState()
true
2.mongosを作成した後、理由によりbalancerを手動で閉じた
mongos> db.settings.findOne({'_id':'balancer'})
{ "_id" : "balancer", "mode" : "off", "stopped" : true }
mongos> sh.getBalancerState()
false
3.balancerの実行期間が設定されていますが、現在の時間はありません.
mongos> var x = db.settings.findOne({'_id':'balancer'})
mongos> x
{
"_id" : "balancer",
"stopped" : true,
"activeWindow" : {
"start" : "00:00",
"stop" : "06:00"
}
}
mongos> sh.getBalancerState()
false
4.balancerの実行期間が設定され、現在の時間が設定されている
mongos> var x = db.settings.findOne({'_id':'balancer'})
mongos> x
{
"_id" : "balancer",
"stopped" : false,
"activeWindow" : {
"start" : "00:00",
"stop" : "22:00"
}
}
mongos> sh.getBalancerState()
true
公式mongo shellのjsコードを見てみましょう
mongos> sh.getBalancerState
function (configDB) {
if (configDB === undefined)
configDB = sh._getConfigDB();
var x = configDB.settings.findOne({_id: "balancer"});
if (x == null)
return true;
return !x.stopped;
}
1.configDBがデフォルトのconfigライブラリでない場合を先に処理
2.
x == null
は、上のbalancerが設定されていないことを表し、デフォルトでオンになっている状況を表します.3.戻り値の.stopped項目を反転し、実行中かどうかを取得
mongos> sh.isBalancerRunning
function (configDB) {
if (configDB === undefined)
configDB = sh._getConfigDB();
var x = configDB.locks.findOne({_id: "balancer"});
if (x == null) {
print("config.locks collection empty or missing. be sure you are connected to a mongos");
return false;
}
return x.state > 0;
}