diff options
| author | Apollon Oikonomopoulos <apoikos@debian.org> | 2018-03-22 12:04:55 +0200 |
|---|---|---|
| committer | Apollon Oikonomopoulos <apoikos@debian.org> | 2018-03-22 12:04:55 +0200 |
| commit | c49e99631589113663b1a3ac691870421965a315 (patch) | |
| tree | ac8127a5a6816f169a6656511bf131a35af2f74a /src/mongo/db/s/migration_source_manager.cpp | |
| parent | d982a88efa79f510c03f1c6c8c63360680ebbf88 (diff) | |
New upstream version 3.4.14upstream/3.4.14
Diffstat (limited to 'src/mongo/db/s/migration_source_manager.cpp')
| -rw-r--r-- | src/mongo/db/s/migration_source_manager.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/mongo/db/s/migration_source_manager.cpp b/src/mongo/db/s/migration_source_manager.cpp index 0ad841ea56f..b70617deee3 100644 --- a/src/mongo/db/s/migration_source_manager.cpp +++ b/src/mongo/db/s/migration_source_manager.cpp @@ -268,18 +268,18 @@ Status MigrationSourceManager::commitChunkOnRecipient(OperationContext* txn) { auto scopedGuard = MakeGuard([&] { cleanupOnError(txn); }); // Tell the recipient shard to fetch the latest changes. - Status commitCloneStatus = _cloneDriver->commitClone(txn); + auto commitCloneStatus = _cloneDriver->commitClone(txn); if (MONGO_FAIL_POINT(failMigrationCommit) && commitCloneStatus.isOK()) { commitCloneStatus = {ErrorCodes::InternalError, "Failing _recvChunkCommit due to failpoint."}; } - if (!commitCloneStatus.isOK()) { - return {commitCloneStatus.code(), - str::stream() << "commit clone failed due to " << commitCloneStatus.toString()}; + return commitCloneStatus.getStatus(); } + _recipientCloneCounts = commitCloneStatus.getValue()["counts"].Obj().getOwned(); + _state = kCloneCompleted; scopedGuard.Dismiss(); return Status::OK(); @@ -332,9 +332,13 @@ Status MigrationSourceManager::commitChunkMetadataOnConfig(OperationContext* txn ErrorCodes::InternalError, "Failpoint 'migrationCommitNetworkError' generated error"); } - const Status migrationCommitStatus = - (commitChunkMigrationResponse.isOK() ? commitChunkMigrationResponse.getValue().commandStatus - : commitChunkMigrationResponse.getStatus()); + Status migrationCommitStatus = commitChunkMigrationResponse.getStatus(); + if (migrationCommitStatus.isOK()) { + migrationCommitStatus = commitChunkMigrationResponse.getValue().commandStatus; + if (migrationCommitStatus.isOK()) { + migrationCommitStatus = commitChunkMigrationResponse.getValue().writeConcernStatus; + } + } if (!migrationCommitStatus.isOK()) { // Need to get the latest optime in case the refresh request goes to a secondary -- @@ -431,7 +435,9 @@ Status MigrationSourceManager::commitChunkMetadataOnConfig(OperationContext* txn << "from" << _args.getFromShardId() << "to" - << _args.getToShardId()), + << _args.getToShardId() + << "counts" + << _recipientCloneCounts), ShardingCatalogClient::kMajorityWriteConcern); return Status::OK(); |
