@@ -221,10 +221,11 @@ std::unique_ptr<RemotingCommand> TcpRemotingClient::invokeSync(const std::string
221221 try {
222222 doBeforeRpcHooks (addr, request, true );
223223 auto costTime = UtilAll::currentTimeMillis () - beginStartTime;
224- if (timeoutMillis <= 0 || timeoutMillis < costTime) {
224+ if (timeoutMillis <= 0 || timeoutMillis <= costTime) {
225225 THROW_MQEXCEPTION (RemotingTimeoutException, " invokeSync call timeout" , -1 );
226226 }
227- std::unique_ptr<RemotingCommand> response (invokeSyncImpl (channel, request, timeoutMillis));
227+ auto remainTimeoutMillis = timeoutMillis - costTime;
228+ std::unique_ptr<RemotingCommand> response (invokeSyncImpl (channel, request, remainTimeoutMillis));
228229 doAfterRpcHooks (addr, request, response.get (), false );
229230 return response;
230231 } catch (const RemotingSendRequestException& e) {
@@ -636,7 +637,9 @@ void TcpRemotingClient::processRequestCommand(std::unique_ptr<RemotingCommand> r
636637
637638 doBeforeRpcHooks (channel->getPeerAddrAndPort (), *requestCommand, false );
638639 response.reset (processor->processRequest (channel, requestCommand.get ()));
639- doAfterRpcHooks (channel->getPeerAddrAndPort (), *response, response.get (), true );
640+ if (response != nullptr ) {
641+ doAfterRpcHooks (channel->getPeerAddrAndPort (), *response, response.get (), true );
642+ }
640643 } catch (std::exception& e) {
641644 LOG_ERROR_NEW (" process request exception. {}" , e.what ());
642645
0 commit comments