2121#include < openssl/x509.h>
2222#include < pulsar/MessageIdBuilder.h>
2323
24+ #include < chrono>
2425#include < fstream>
2526
2627#include " AsioDefines.h"
3132#include " ConsumerImpl.h"
3233#include " ExecutorService.h"
3334#include " LogUtils.h"
35+ #include " MockServer.h"
3436#include " OpSendMsg.h"
3537#include " ProducerImpl.h"
3638#include " PulsarApi.pb.h"
@@ -1005,15 +1007,17 @@ Future<Result, BrokerConsumerStatsImpl> ClientConnection::newConsumerStats(uint6
10051007void ClientConnection::newTopicLookup (const std::string& topicName, bool authoritative,
10061008 const std::string& listenerName, uint64_t requestId,
10071009 const LookupDataResultPromisePtr& promise) {
1008- newLookup (Commands::newLookup (topicName, authoritative, requestId, listenerName), requestId, promise);
1010+ newLookup (Commands::newLookup (topicName, authoritative, requestId, listenerName), requestId, " LOOKUP" ,
1011+ promise);
10091012}
10101013
10111014void ClientConnection::newPartitionedMetadataLookup (const std::string& topicName, uint64_t requestId,
10121015 const LookupDataResultPromisePtr& promise) {
1013- newLookup (Commands::newPartitionMetadataRequest (topicName, requestId), requestId, promise);
1016+ newLookup (Commands::newPartitionMetadataRequest (topicName, requestId), requestId, " PARTITIONED_METADATA" ,
1017+ promise);
10141018}
10151019
1016- void ClientConnection::newLookup (const SharedBuffer& cmd, uint64_t requestId,
1020+ void ClientConnection::newLookup (const SharedBuffer& cmd, uint64_t requestId, const char * requestType,
10171021 const LookupDataResultPromisePtr& promise) {
10181022 Lock lock (mutex_);
10191023 std::shared_ptr<LookupDataResultPtr> lookupDataResult;
@@ -1042,6 +1046,7 @@ void ClientConnection::newLookup(const SharedBuffer& cmd, uint64_t requestId,
10421046 pendingLookupRequests_.insert (std::make_pair (requestId, requestData));
10431047 numOfPendingLookupRequest_++;
10441048 lock.unlock ();
1049+ LOG_DEBUG (cnxString_ << " Inserted lookup request " << requestType << " (req_id: " << requestId << " )" );
10451050 sendCommand (cmd);
10461051}
10471052
@@ -1158,12 +1163,15 @@ void ClientConnection::sendPendingCommands() {
11581163 }
11591164}
11601165
1161- Future<Result, ResponseData> ClientConnection::sendRequestWithId (const SharedBuffer& cmd, int requestId) {
1166+ Future<Result, ResponseData> ClientConnection::sendRequestWithId (const SharedBuffer& cmd, int requestId,
1167+ const char * requestType) {
11621168 Lock lock (mutex_);
11631169
11641170 if (isClosed ()) {
11651171 lock.unlock ();
11661172 Promise<Result, ResponseData> promise;
1173+ LOG_DEBUG (cnxString_ << " Fail " << requestType << " (req_id: " << requestId
1174+ << " ) to a closed connection" );
11671175 promise.setFailed (ResultNotConnected);
11681176 return promise.getFuture ();
11691177 }
@@ -1182,7 +1190,17 @@ Future<Result, ResponseData> ClientConnection::sendRequestWithId(const SharedBuf
11821190 pendingRequests_.insert (std::make_pair (requestId, requestData));
11831191 lock.unlock ();
11841192
1185- sendCommand (cmd);
1193+ LOG_DEBUG (cnxString_ << " Inserted request " << requestType << " (req_id: " << requestId << " )" );
1194+ if (mockingRequests_.load (std::memory_order_acquire)) {
1195+ if (mockServer_ == nullptr ) {
1196+ LOG_WARN (cnxString_ << " Mock server is unexpectedly null when processing " << requestType);
1197+ sendCommand (cmd);
1198+ } else if (!mockServer_->sendRequest (requestType, requestId)) {
1199+ sendCommand (cmd);
1200+ }
1201+ } else {
1202+ sendCommand (cmd);
1203+ }
11861204 return requestData.promise .getFuture ();
11871205}
11881206
@@ -1625,9 +1643,6 @@ void ClientConnection::handleConsumerStatsResponse(
16251643
16261644void ClientConnection::handleLookupTopicRespose (
16271645 const proto::CommandLookupTopicResponse& lookupTopicResponse) {
1628- LOG_DEBUG (cnxString_ << " Received lookup response from server. req_id: "
1629- << lookupTopicResponse.request_id ());
1630-
16311646 Lock lock (mutex_);
16321647 auto it = pendingLookupRequests_.find (lookupTopicResponse.request_id ());
16331648 if (it != pendingLookupRequests_.end ()) {
0 commit comments