This appears to be the culprit:
https://github.com/mongodb/mongo/blob/r3.1.9/src/mongo/s/grid.cpp#L110
auto balSettingsResult =
grid.catalogManager(txn)->getGlobalSettings(txn, SettingsType::BalancerDocKey);
if (!balSettingsResult.isOK()) {
warning() << balSettingsResult.getStatus();
return false;
}
It should not always return false on not OK status. If the status is ErrorCodes::NoMatchingDocument, then it should return true since the absence of the document means that the default behavior should be followed.