本文整理汇总了C++中WriteConcernOptions::parseSecondaryThrottle方法的典型用法代码示例。如果您正苦于以下问题:C++ WriteConcernOptions::parseSecondaryThrottle方法的具体用法?C++ WriteConcernOptions::parseSecondaryThrottle怎么用?C++ WriteConcernOptions::parseSecondaryThrottle使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WriteConcernOptions
的用法示例。
在下文中一共展示了WriteConcernOptions::parseSecondaryThrottle方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ChunkMoveWriteConcernOptions
StatusWith<ChunkMoveWriteConcernOptions> ChunkMoveWriteConcernOptions::initFromCommand(
const BSONObj& cmdObj) {
BSONObj secThrottleObj;
WriteConcernOptions writeConcernOptions;
Status status = writeConcernOptions.parseSecondaryThrottle(cmdObj, &secThrottleObj);
if (!status.isOK()) {
if (status.code() != ErrorCodes::WriteConcernNotDefined) {
return status;
}
writeConcernOptions = getDefaultWriteConcernForMigration();
} else {
repl::ReplicationCoordinator* replCoordinator = repl::getGlobalReplicationCoordinator();
if (replCoordinator->getReplicationMode() ==
repl::ReplicationCoordinator::modeMasterSlave &&
writeConcernOptions.shouldWaitForOtherNodes()) {
warning() << "moveChunk cannot check if secondary throttle setting "
<< writeConcernOptions.toBSON()
<< " can be enforced in a master slave configuration";
}
Status status = replCoordinator->checkIfWriteConcernCanBeSatisfied(writeConcernOptions);
if (!status.isOK() && status != ErrorCodes::NoReplicationEnabled) {
return status;
}
}
if (writeConcernOptions.shouldWaitForOtherNodes() &&
writeConcernOptions.wTimeout == WriteConcernOptions::kNoTimeout) {
// Don't allow no timeout
writeConcernOptions.wTimeout = kDefaultWriteTimeoutForMigrationMs;
}
return ChunkMoveWriteConcernOptions(secThrottleObj, writeConcernOptions);
}
示例2: run
bool run(OperationContext* txn,
string const& db,
BSONObj& cmdObj,
int,
string& errmsg,
BSONObjBuilder& result,
bool) {
string ns;
if (!FieldParser::extract(cmdObj, nsField, &ns, &errmsg)) {
return false;
}
if (ns == "") {
errmsg = "no collection name specified";
return false;
}
BSONObj startingFromKey;
if (!FieldParser::extract(cmdObj, startingFromKeyField, &startingFromKey, &errmsg)) {
return false;
}
WriteConcernOptions writeConcern;
Status status = writeConcern.parseSecondaryThrottle(cmdObj, NULL);
if (!status.isOK()) {
if (status.code() != ErrorCodes::WriteConcernNotDefined) {
return appendCommandStatus(result, status);
}
writeConcern = DefaultWriteConcern;
} else {
repl::ReplicationCoordinator* replCoordinator = repl::getGlobalReplicationCoordinator();
Status status = replCoordinator->checkIfWriteConcernCanBeSatisfied(writeConcern);
if (replCoordinator->getReplicationMode() ==
repl::ReplicationCoordinator::modeMasterSlave &&
writeConcern.shouldWaitForOtherNodes()) {
warning() << "cleanupOrphaned cannot check if write concern setting "
<< writeConcern.toBSON()
<< " can be enforced in a master slave configuration";
}
if (!status.isOK() && status != ErrorCodes::NoReplicationEnabled) {
return appendCommandStatus(result, status);
}
}
if (writeConcern.shouldWaitForOtherNodes() &&
writeConcern.wTimeout == WriteConcernOptions::kNoTimeout) {
// Don't allow no timeout.
writeConcern.wTimeout = kDefaultWTimeoutMs;
}
if (!shardingState.enabled()) {
errmsg = str::stream() << "server is not part of a sharded cluster or "
<< "the sharding metadata is not yet initialized.";
return false;
}
ChunkVersion shardVersion;
status = shardingState.refreshMetadataNow(txn, ns, &shardVersion);
if (!status.isOK()) {
if (status.code() == ErrorCodes::RemoteChangeDetected) {
warning() << "Shard version in transition detected while refreshing "
<< "metadata for " << ns << " at version " << shardVersion << endl;
} else {
errmsg = str::stream() << "failed to refresh shard metadata: " << status.reason();
return false;
}
}
BSONObj stoppedAtKey;
CleanupResult cleanupResult = cleanupOrphanedData(
txn, NamespaceString(ns), startingFromKey, writeConcern, &stoppedAtKey, &errmsg);
if (cleanupResult == CleanupResult_Error) {
return false;
}
if (cleanupResult == CleanupResult_Continue) {
result.append(stoppedAtKeyField(), stoppedAtKey);
} else {
dassert(cleanupResult == CleanupResult_Done);
}
return true;
}