本文整理汇总了C++中WriteConcernOptions::shouldWaitForOtherNodes方法的典型用法代码示例。如果您正苦于以下问题:C++ WriteConcernOptions::shouldWaitForOtherNodes方法的具体用法?C++ WriteConcernOptions::shouldWaitForOtherNodes怎么用?C++ WriteConcernOptions::shouldWaitForOtherNodes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WriteConcernOptions
的用法示例。
在下文中一共展示了WriteConcernOptions::shouldWaitForOtherNodes方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: warning
StatusWith<WriteConcernOptions> ChunkMoveWriteConcernOptions::getEffectiveWriteConcern(
const MigrationSecondaryThrottleOptions& options) {
if (options.getSecondaryThrottle() == MigrationSecondaryThrottleOptions::kOff) {
return kWriteConcernLocal;
}
WriteConcernOptions writeConcern;
if (options.isWriteConcernSpecified()) {
writeConcern = options.getWriteConcern();
repl::ReplicationCoordinator* replCoordinator = repl::getGlobalReplicationCoordinator();
if (replCoordinator->getReplicationMode() ==
repl::ReplicationCoordinator::modeMasterSlave &&
writeConcern.shouldWaitForOtherNodes()) {
warning() << "moveChunk cannot check if secondary throttle setting "
<< writeConcern.toBSON()
<< " can be enforced in a master slave configuration";
}
Status status = replCoordinator->checkIfWriteConcernCanBeSatisfied(writeConcern);
if (!status.isOK() && status != ErrorCodes::NoReplicationEnabled) {
return status;
}
} else {
writeConcern = getDefaultWriteConcernForMigration();
}
if (writeConcern.shouldWaitForOtherNodes() &&
writeConcern.wTimeout == WriteConcernOptions::kNoTimeout) {
// Don't allow no timeout
writeConcern.wTimeout = durationCount<Milliseconds>(kDefaultWriteTimeoutForMigration);
}
return writeConcern;
}
示例3: getDefaultWriteConcernForMigration
StatusWith<WriteConcernOptions> ChunkMoveWriteConcernOptions::getEffectiveWriteConcern(
OperationContext* opCtx, const MigrationSecondaryThrottleOptions& options) {
auto secondaryThrottle = options.getSecondaryThrottle();
if (secondaryThrottle == MigrationSecondaryThrottleOptions::kDefault) {
if (opCtx->getServiceContext()->getStorageEngine()->supportsDocLocking()) {
secondaryThrottle = MigrationSecondaryThrottleOptions::kOff;
} else {
secondaryThrottle = MigrationSecondaryThrottleOptions::kOn;
}
}
if (secondaryThrottle == MigrationSecondaryThrottleOptions::kOff) {
return kWriteConcernLocal;
}
WriteConcernOptions writeConcern;
if (options.isWriteConcernSpecified()) {
writeConcern = options.getWriteConcern();
repl::ReplicationCoordinator* replCoordinator = repl::ReplicationCoordinator::get(opCtx);
Status status = replCoordinator->checkIfWriteConcernCanBeSatisfied(writeConcern);
if (!status.isOK() && status != ErrorCodes::NoReplicationEnabled) {
return status;
}
} else {
writeConcern = getDefaultWriteConcernForMigration(opCtx);
}
if (writeConcern.shouldWaitForOtherNodes() &&
writeConcern.wTimeout == WriteConcernOptions::kNoTimeout) {
// Don't allow no timeout
writeConcern.wTimeout = durationCount<Milliseconds>(kDefaultWriteTimeoutForMigration);
}
return writeConcern;
}
示例4: 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;
}