summaryrefslogtreecommitdiff
path: root/src/mongo/db/keys_collection_client_direct.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/keys_collection_client_direct.cpp')
-rw-r--r--src/mongo/db/keys_collection_client_direct.cpp32
1 files changed, 27 insertions, 5 deletions
diff --git a/src/mongo/db/keys_collection_client_direct.cpp b/src/mongo/db/keys_collection_client_direct.cpp
index 4b90c8bb23f..af1e90d57a5 100644
--- a/src/mongo/db/keys_collection_client_direct.cpp
+++ b/src/mongo/db/keys_collection_client_direct.cpp
@@ -72,13 +72,35 @@ bool isRetriableError(ErrorCodes::Error code, Shard::RetryPolicy options) {
KeysCollectionClientDirect::KeysCollectionClientDirect() : _rsLocalClient() {}
-StatusWith<std::vector<KeysCollectionDocument>> KeysCollectionClientDirect::getNewKeys(
+StatusWith<std::vector<KeysCollectionDocument>> KeysCollectionClientDirect::getNewInternalKeys(
OperationContext* opCtx,
StringData purpose,
const LogicalTime& newerThanThis,
bool useMajority) {
+ return _getNewKeys<KeysCollectionDocument>(
+ opCtx, NamespaceString::kKeysCollectionNamespace, purpose, newerThanThis, useMajority);
+}
+StatusWith<std::vector<ExternalKeysCollectionDocument>>
+KeysCollectionClientDirect::getNewExternalKeys(OperationContext* opCtx,
+ StringData purpose,
+ const LogicalTime& newerThanThis,
+ bool useMajority) {
+ return _getNewKeys<ExternalKeysCollectionDocument>(
+ opCtx,
+ NamespaceString::kExternalKeysCollectionNamespace,
+ purpose,
+ newerThanThis,
+ useMajority);
+}
+template <typename KeyDocumentType>
+StatusWith<std::vector<KeyDocumentType>> KeysCollectionClientDirect::_getNewKeys(
+ OperationContext* opCtx,
+ const NamespaceString& nss,
+ StringData purpose,
+ const LogicalTime& newerThanThis,
+ bool useMajority) {
BSONObjBuilder queryBuilder;
queryBuilder.append("purpose", purpose);
queryBuilder.append("expiresAt", BSON("$gt" << newerThanThis.asTimestamp()));
@@ -91,7 +113,7 @@ StatusWith<std::vector<KeysCollectionDocument>> KeysCollectionClientDirect::getN
auto findStatus = _query(opCtx,
ReadPreferenceSetting(ReadPreference::Nearest, TagSet{}),
readConcern,
- NamespaceString::kKeysCollectionNamespace,
+ nss,
queryBuilder.obj(),
BSON("expiresAt" << 1),
boost::none);
@@ -101,11 +123,11 @@ StatusWith<std::vector<KeysCollectionDocument>> KeysCollectionClientDirect::getN
}
const auto& keyDocs = findStatus.getValue().docs;
- std::vector<KeysCollectionDocument> keys;
+ std::vector<KeyDocumentType> keys;
for (auto&& keyDoc : keyDocs) {
- KeysCollectionDocument key;
+ KeyDocumentType key;
try {
- key = KeysCollectionDocument::parse(IDLParserErrorContext("keyDoc"), keyDoc);
+ key = KeyDocumentType::parse(IDLParserErrorContext("keyDoc"), keyDoc);
} catch (...) {
return exceptionToStatus();
}