diff --git a/common/cpp/include/asapo/request/request_handler.h b/common/cpp/include/asapo/request/request_handler.h index 6a5289bd1b7059d79c229fe324ee7ed3bcec10d6..9257f3b9600901fbac3c9c7ab13d3a6d660320f4 100644 --- a/common/cpp/include/asapo/request/request_handler.h +++ b/common/cpp/include/asapo/request/request_handler.h @@ -14,7 +14,7 @@ class RequestHandler { virtual void PrepareProcessingRequestLocked() = 0; virtual void TearDownProcessingRequestLocked(bool success) = 0; virtual bool ProcessRequestUnlocked(GenericRequest* request, bool* retry) = 0; - virtual void ProcessRequestTimeout(GenericRequest* request) = 0; + virtual void ProcessRequestTimeoutUnlocked(GenericRequest* request) = 0; virtual bool ReadyProcessRequest() = 0; virtual ~RequestHandler() = default; }; diff --git a/common/cpp/src/request/request_pool.cpp b/common/cpp/src/request/request_pool.cpp index dc2573b67c47bac923fe8ff8843eeed50a38fe44..32d0cd99943b67e3cdea3e9b5bbefa60b0e3e981 100644 --- a/common/cpp/src/request/request_pool.cpp +++ b/common/cpp/src/request/request_pool.cpp @@ -107,7 +107,9 @@ void RequestPool::ProcessRequest(const std::unique_ptr<RequestHandler> &request_ ThreadInformation* thread_info) { auto request = GetRequestFromQueue(); if (request->TimedOut()) { - request_handler->ProcessRequestTimeout(request.get()); + thread_info->lock.unlock(); + request_handler->ProcessRequestTimeoutUnlocked(request.get()); + thread_info->lock.lock(); return; } request_handler->PrepareProcessingRequestLocked(); diff --git a/common/cpp/unittests/request/mocking.h b/common/cpp/unittests/request/mocking.h index d3687f9469d568a1c831e1335d619b1a3dbbe935..d462be46e9a7fd209a1da79b2a43a48ae5c3d559 100644 --- a/common/cpp/unittests/request/mocking.h +++ b/common/cpp/unittests/request/mocking.h @@ -16,7 +16,8 @@ class MockRequestHandler : public RequestHandler { MOCK_METHOD0(ReadyProcessRequest, bool()); MOCK_METHOD1(TearDownProcessingRequestLocked, void(bool processing_succeeded)); MOCK_METHOD2(ProcessRequestUnlocked_t, bool (const GenericRequest* request, bool* retry)); - MOCK_METHOD1(ProcessRequestTimeout, void(GenericRequest* request)); + MOCK_METHOD1(ProcessRequestTimeoutUnlocked, void(GenericRequest* request))GenericRequest* + ; uint64_t retry_counter = 0; bool ProcessRequestUnlocked(GenericRequest* request, bool* retry) override { retry_counter = request->GetRetryCounter(); diff --git a/producer/api/cpp/src/request_handler_filesystem.cpp b/producer/api/cpp/src/request_handler_filesystem.cpp index 39a8c3d6935471e656d8a65ca8fecbb233c457e0..968c68b347f341af8ac71048e4092e54895be5ec 100644 --- a/producer/api/cpp/src/request_handler_filesystem.cpp +++ b/producer/api/cpp/src/request_handler_filesystem.cpp @@ -38,7 +38,7 @@ bool RequestHandlerFilesystem::ProcessRequestUnlocked(GenericRequest* request, b return true; } -void RequestHandlerFilesystem::ProcessRequestTimeout(GenericRequest* request) { +void RequestHandlerFilesystem::ProcessRequestTimeoutUnlocked(GenericRequest* request) { log__->Error("request timeout, id:" + std::to_string(request->header.data_id) + " to " + request->header.stream + " stream"); } diff --git a/producer/api/cpp/src/request_handler_filesystem.h b/producer/api/cpp/src/request_handler_filesystem.h index bbb5250c7fb95f41fbefdd3ec12d1e7c27564914..15dc03e563bb6ca0cc0bb6374bbf5ad0205e9d64 100644 --- a/producer/api/cpp/src/request_handler_filesystem.h +++ b/producer/api/cpp/src/request_handler_filesystem.h @@ -23,7 +23,7 @@ class RequestHandlerFilesystem: public RequestHandler { }; void PrepareProcessingRequestLocked() override {}; void TearDownProcessingRequestLocked(bool request_processed_successfully) override {}; - void ProcessRequestTimeout(GenericRequest* request) override; + void ProcessRequestTimeoutUnlocked(GenericRequest* request) override; virtual ~RequestHandlerFilesystem() = default; std::unique_ptr<IO> io__; diff --git a/producer/api/cpp/src/request_handler_tcp.cpp b/producer/api/cpp/src/request_handler_tcp.cpp index 85895cfd06c37dcd4257ad88c2c6bbf1d5be75e4..9be95ddd219f83c025a6f36caac4119c65efd22e 100644 --- a/producer/api/cpp/src/request_handler_tcp.cpp +++ b/producer/api/cpp/src/request_handler_tcp.cpp @@ -307,7 +307,7 @@ void RequestHandlerTcp::TearDownProcessingRequestLocked(bool request_processed_s } } -void RequestHandlerTcp::ProcessRequestTimeout(GenericRequest* request) { +void RequestHandlerTcp::ProcessRequestTimeoutUnlocked(GenericRequest* request) { auto producer_request = static_cast<ProducerRequest*>(request); auto err_string = "request id:" + std::to_string(request->header.data_id) + ", opcode: " + std::to_string( request->header.op_code) + " for " + request->header.stream + diff --git a/producer/api/cpp/src/request_handler_tcp.h b/producer/api/cpp/src/request_handler_tcp.h index a891a81d5e139da8c60f00d98997cb8c70e2ea1e..7b8e6187480bf0e0452a1affbc719fb9839db2ea 100644 --- a/producer/api/cpp/src/request_handler_tcp.h +++ b/producer/api/cpp/src/request_handler_tcp.h @@ -23,7 +23,7 @@ class RequestHandlerTcp: public RequestHandler { bool ReadyProcessRequest() override; void PrepareProcessingRequestLocked() override; void TearDownProcessingRequestLocked(bool request_processed_successfully) override; - void ProcessRequestTimeout(GenericRequest* request) override; + void ProcessRequestTimeoutUnlocked(GenericRequest* request) override; virtual ~RequestHandlerTcp() = default; std::unique_ptr<IO> io__; diff --git a/producer/api/cpp/unittests/test_request_handler_tcp.cpp b/producer/api/cpp/unittests/test_request_handler_tcp.cpp index 1d7b812cd1e88df4915b65a83639774ef8ececb8..9066b904493af1df5a095a28abdcf1cdc0f55981 100644 --- a/producer/api/cpp/unittests/test_request_handler_tcp.cpp +++ b/producer/api/cpp/unittests/test_request_handler_tcp.cpp @@ -974,7 +974,7 @@ TEST_F(RequestHandlerTcpTests, TimeoutCallsCallback) { HasSubstr("stream")) )); - request_handler.ProcessRequestTimeout(&request); + request_handler.ProcessRequestTimeoutUnlocked(&request); ASSERT_THAT(callback_err, Eq(asapo::ProducerErrorTemplates::kTimeout)); ASSERT_THAT(callback_called, Eq(true)); diff --git a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp index 0f8f387faf1d2bd20490a4e6b409612b1c81e81d..1529dc7ff4dfa201e0ee0c224fcb2ea3f0dde6e4 100644 --- a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp +++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp @@ -86,7 +86,7 @@ void ReceiverDataServerRequestHandler::TearDownProcessingRequestLocked(bool /*pr // do nothing } -void ReceiverDataServerRequestHandler::ProcessRequestTimeout(GenericRequest* /*request*/) { +void ReceiverDataServerRequestHandler::ProcessRequestTimeoutUnlocked(GenericRequest* /*request*/) { // do nothing } diff --git a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h index 18fc5937a793c9358376d24ec0480496ce93e88a..952cb1cb78e83b6c92ecd142e7f6761a6b086a44 100644 --- a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h +++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.h @@ -17,7 +17,7 @@ class ReceiverDataServerRequestHandler: public RequestHandler { bool ReadyProcessRequest() override; void PrepareProcessingRequestLocked() override; void TearDownProcessingRequestLocked(bool processing_succeeded) override; - void ProcessRequestTimeout(GenericRequest* request) override; + void ProcessRequestTimeoutUnlocked(GenericRequest* request) override; const AbstractLogger* log__; Statistics* statistics__;