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.