diff --git a/src/mongo/db/keys_collection_client_direct.cpp b/src/mongo/db/keys_collection_client_direct.cpp
index 9031629..41716b1 100644
--- a/src/mongo/db/keys_collection_client_direct.cpp
+++ b/src/mongo/db/keys_collection_client_direct.cpp
@@ -81,15 +81,41 @@ StatusWith<std::vector<KeysCollectionDocument>> KeysCollectionClientDirect::getN
     queryBuilder.append("purpose", purpose);
     queryBuilder.append("expiresAt", BSON("$gt" << newerThanThis.asTimestamp()));
 
+    /*
+    auto readConcern = serverGlobalParams.enableMajorityReadConcern
+        ? repl::ReadConcernLevel::kMajorityReadConcern
+        : repl::ReadConcernLevel::kLocalReadConcern;
+        */
+    auto readConcern = repl::ReadConcernLevel::kMajorityReadConcern;
+
+    log() << "SERVER-40535: getNewKeys start";
     auto findStatus = _query(opCtx,
                              ReadPreferenceSetting(ReadPreference::Nearest, TagSet{}),
-                             repl::ReadConcernLevel::kLocalReadConcern,
+                             readConcern,
                              KeysCollectionDocument::ConfigNS,
                              queryBuilder.obj(),
                              BSON("expiresAt" << 1),
                              boost::none);
 
+    /*
+    if (findStatus == ErrorCodes::ReadConcernMajorityNotAvailableYet) {
+        log() << "SERVER-40535: getNewKeys retry with RC:local";
+        BSONObjBuilder queryBuilder;
+        queryBuilder.append("purpose", purpose);
+        queryBuilder.append("expiresAt", BSON("$gt" << newerThanThis.asTimestamp()));
+
+        findStatus = _query(opCtx,
+                            ReadPreferenceSetting(ReadPreference::Nearest, TagSet{}),
+                            repl::ReadConcernLevel::kLocalReadConcern,
+                            KeysCollectionDocument::ConfigNS,
+                            queryBuilder.obj(),
+                            BSON("expiresAt" << 1),
+                            boost::none);
+    }
+    */
+
     if (!findStatus.isOK()) {
+        log() << "SERVER-40535: getNewKeys done fail " << findStatus.getStatus();
         return findStatus.getStatus();
     }
 
@@ -100,10 +126,12 @@ StatusWith<std::vector<KeysCollectionDocument>> KeysCollectionClientDirect::getN
         if (!parseStatus.isOK()) {
             return parseStatus.getStatus();
         }
+        log() << "SERVER-40535: getNewKeys got key";
 
         keys.push_back(std::move(parseStatus.getValue()));
     }
 
+    log() << "SERVER-40535: getNewKeys done success keys count:" << keys.size();
     return keys;
 }
 
@@ -143,12 +171,14 @@ Status KeysCollectionClientDirect::_insert(OperationContext* opCtx,
     const BSONObj cmdObj = request.toBSON();
 
     for (int retry = 1; retry <= kOnErrorNumRetries; ++retry) {
+        log() << "SERVER-40535: insert new  key retry: " << retry;
         // Note: write commands can only be issued against a primary.
         auto swResponse = _rsLocalClient.runCommandOnce(opCtx, nss.db().toString(), cmdObj);
 
         BatchedCommandResponse batchResponse;
         auto writeStatus =
             Shard::CommandResponse::processBatchWriteResponse(swResponse, &batchResponse);
+        log() << "SERVER-40535: insert new  key result: " << batchResponse.toStatus();
         if (retry < kOnErrorNumRetries &&
             isRetriableError(writeStatus.code(), Shard::RetryPolicy::kIdempotent)) {
             LOG(2) << "Batch write command to " << nss.db()
diff --git a/src/mongo/db/keys_collection_manager.cpp b/src/mongo/db/keys_collection_manager.cpp
index df82ebe..f18b202 100644
--- a/src/mongo/db/keys_collection_manager.cpp
+++ b/src/mongo/db/keys_collection_manager.cpp
@@ -256,6 +256,7 @@ void KeysCollectionManager::PeriodicRunner::_doPeriodicRefresh(ServiceContext* s
                 nextWakeup =
                     howMuchSleepNeedFor(currentTime, latestKey.getExpiresAt(), refreshInterval);
             } else {
+                log() << "SERVER-40535 doPeriodicRefresh errorCount " << errorCount;
                 errorCount += 1;
                 nextWakeup = Milliseconds(kRefreshIntervalIfErrored.count() * errorCount);
                 if (nextWakeup > kMaxRefreshWaitTime) {
diff --git a/src/mongo/db/repl/sync_tail.cpp b/src/mongo/db/repl/sync_tail.cpp
index 2f32694..9d54948 100644
--- a/src/mongo/db/repl/sync_tail.cpp
+++ b/src/mongo/db/repl/sync_tail.cpp
@@ -755,6 +755,7 @@ void SyncTail::_oplogApplication(ReplicationCoordinator* replCoord,
         // Transition to SECONDARY state, if possible.
         tryToGoLiveAsASecondary(&opCtx, replCoord, minValid);
 
+        log() << "SERVER-40535: _oplogApplication 1";
         long long termWhenBufferIsEmpty = replCoord->getTerm();
         // Blocks up to a second waiting for a batch to be ready to apply. If one doesn't become
         // ready in time, we'll loop again so we can do the above checks periodically.
@@ -767,6 +768,7 @@ void SyncTail::_oplogApplication(ReplicationCoordinator* replCoord,
             if (MONGO_FAIL_POINT(rsSyncApplyStop)) {
                 continue;
             }
+            log() << "SERVER-40535: _oplogApplication 2";
             // Signal drain complete if we're in Draining state and the buffer is empty.
             replCoord->signalDrainComplete(&opCtx, termWhenBufferIsEmpty);
             continue;  // Try again.
@@ -836,6 +838,7 @@ void SyncTail::_oplogApplication(ReplicationCoordinator* replCoord,
         // Wall clock time is non-optional post 3.6.
         invariant(lastWallTimeInBatch);
         finalizer->record({lastOpTimeInBatch, lastWallTimeInBatch.get()}, consistency);
+        log() << "SERVER-40535: _oplogApplication 3";
     }
 }
 
