diff options
Diffstat (limited to 'src/mongo/s/catalog/catalog_manager.cpp')
-rw-r--r-- | src/mongo/s/catalog/catalog_manager.cpp | 171 |
1 files changed, 83 insertions, 88 deletions
diff --git a/src/mongo/s/catalog/catalog_manager.cpp b/src/mongo/s/catalog/catalog_manager.cpp index 02da9c79c58..46acce91140 100644 --- a/src/mongo/s/catalog/catalog_manager.cpp +++ b/src/mongo/s/catalog/catalog_manager.cpp @@ -44,114 +44,109 @@ namespace mongo { - using std::unique_ptr; - using std::string; +using std::unique_ptr; +using std::string; namespace { - Status getStatus(const BatchedCommandResponse& response) { - if (response.getOk() == 0) { - return Status(static_cast<ErrorCodes::Error>(response.getErrCode()), - response.getErrMessage()); - } - - if (response.isErrDetailsSet()) { - const WriteErrorDetail* errDetail = response.getErrDetails().front(); - - return Status(static_cast<ErrorCodes::Error>(errDetail->getErrCode()), - errDetail->getErrMessage()); - } - - if (response.isWriteConcernErrorSet()) { - const WCErrorDetail* errDetail = response.getWriteConcernError(); +Status getStatus(const BatchedCommandResponse& response) { + if (response.getOk() == 0) { + return Status(static_cast<ErrorCodes::Error>(response.getErrCode()), + response.getErrMessage()); + } - return Status(static_cast<ErrorCodes::Error>(errDetail->getErrCode()), - errDetail->getErrMessage()); - } + if (response.isErrDetailsSet()) { + const WriteErrorDetail* errDetail = response.getErrDetails().front(); - return Status::OK(); + return Status(static_cast<ErrorCodes::Error>(errDetail->getErrCode()), + errDetail->getErrMessage()); } -} // namespace + if (response.isWriteConcernErrorSet()) { + const WCErrorDetail* errDetail = response.getWriteConcernError(); - Status CatalogManager::insert(const string& ns, - const BSONObj& doc, - BatchedCommandResponse* response) { + return Status(static_cast<ErrorCodes::Error>(errDetail->getErrCode()), + errDetail->getErrMessage()); + } - unique_ptr<BatchedInsertRequest> insert(new BatchedInsertRequest()); - insert->addToDocuments(doc); + return Status::OK(); +} - BatchedCommandRequest request(insert.release()); - request.setNS(ns); - request.setWriteConcern(WriteConcernOptions::Majority); +} // namespace - BatchedCommandResponse dummyResponse; - if (response == NULL) { - response = &dummyResponse; - } +Status CatalogManager::insert(const string& ns, + const BSONObj& doc, + BatchedCommandResponse* response) { + unique_ptr<BatchedInsertRequest> insert(new BatchedInsertRequest()); + insert->addToDocuments(doc); - // Make sure to add ids to the request, since this is an insert operation - unique_ptr<BatchedCommandRequest> requestWithIds( - BatchedCommandRequest::cloneWithIds(request)); - const BatchedCommandRequest& requestToSend = - requestWithIds.get() ? *requestWithIds : request; + BatchedCommandRequest request(insert.release()); + request.setNS(ns); + request.setWriteConcern(WriteConcernOptions::Majority); - writeConfigServerDirect(requestToSend, response); - return getStatus(*response); + BatchedCommandResponse dummyResponse; + if (response == NULL) { + response = &dummyResponse; } - Status CatalogManager::update(const string& ns, - const BSONObj& query, - const BSONObj& update, - bool upsert, - bool multi, - BatchedCommandResponse* response) { - - unique_ptr<BatchedUpdateDocument> updateDoc(new BatchedUpdateDocument()); - updateDoc->setQuery(query); - updateDoc->setUpdateExpr(update); - updateDoc->setUpsert(upsert); - updateDoc->setMulti(multi); - - unique_ptr<BatchedUpdateRequest> updateRequest(new BatchedUpdateRequest()); - updateRequest->addToUpdates(updateDoc.release()); - updateRequest->setWriteConcern(WriteConcernOptions::Majority); - - BatchedCommandRequest request(updateRequest.release()); - request.setNS(ns); - - BatchedCommandResponse dummyResponse; - if (response == NULL) { - response = &dummyResponse; - } - - writeConfigServerDirect(request, response); - return getStatus(*response); + // Make sure to add ids to the request, since this is an insert operation + unique_ptr<BatchedCommandRequest> requestWithIds(BatchedCommandRequest::cloneWithIds(request)); + const BatchedCommandRequest& requestToSend = requestWithIds.get() ? *requestWithIds : request; + + writeConfigServerDirect(requestToSend, response); + return getStatus(*response); +} + +Status CatalogManager::update(const string& ns, + const BSONObj& query, + const BSONObj& update, + bool upsert, + bool multi, + BatchedCommandResponse* response) { + unique_ptr<BatchedUpdateDocument> updateDoc(new BatchedUpdateDocument()); + updateDoc->setQuery(query); + updateDoc->setUpdateExpr(update); + updateDoc->setUpsert(upsert); + updateDoc->setMulti(multi); + + unique_ptr<BatchedUpdateRequest> updateRequest(new BatchedUpdateRequest()); + updateRequest->addToUpdates(updateDoc.release()); + updateRequest->setWriteConcern(WriteConcernOptions::Majority); + + BatchedCommandRequest request(updateRequest.release()); + request.setNS(ns); + + BatchedCommandResponse dummyResponse; + if (response == NULL) { + response = &dummyResponse; } - Status CatalogManager::remove(const string& ns, - const BSONObj& query, - int limit, - BatchedCommandResponse* response) { - - unique_ptr<BatchedDeleteDocument> deleteDoc(new BatchedDeleteDocument); - deleteDoc->setQuery(query); - deleteDoc->setLimit(limit); + writeConfigServerDirect(request, response); + return getStatus(*response); +} - unique_ptr<BatchedDeleteRequest> deleteRequest(new BatchedDeleteRequest()); - deleteRequest->addToDeletes(deleteDoc.release()); - deleteRequest->setWriteConcern(WriteConcernOptions::Majority); +Status CatalogManager::remove(const string& ns, + const BSONObj& query, + int limit, + BatchedCommandResponse* response) { + unique_ptr<BatchedDeleteDocument> deleteDoc(new BatchedDeleteDocument); + deleteDoc->setQuery(query); + deleteDoc->setLimit(limit); - BatchedCommandRequest request(deleteRequest.release()); - request.setNS(ns); + unique_ptr<BatchedDeleteRequest> deleteRequest(new BatchedDeleteRequest()); + deleteRequest->addToDeletes(deleteDoc.release()); + deleteRequest->setWriteConcern(WriteConcernOptions::Majority); - BatchedCommandResponse dummyResponse; - if (response == NULL) { - response = &dummyResponse; - } + BatchedCommandRequest request(deleteRequest.release()); + request.setNS(ns); - writeConfigServerDirect(request, response); - return getStatus(*response); + BatchedCommandResponse dummyResponse; + if (response == NULL) { + response = &dummyResponse; } -} // namespace mongo + writeConfigServerDirect(request, response); + return getStatus(*response); +} + +} // namespace mongo |