void Cpp2Connection::killRequest( ResponseChannel::Request& req, TApplicationException::TApplicationExceptionType reason, const char* comment) { VLOG(1) << "ERROR: Task killed: " << comment << ": " << context_.getPeerAddress()->getAddressStr(); auto server = worker_->getServer(); auto observer = server->getObserver(); if (observer) { if (reason == TApplicationException::TApplicationExceptionType::LOADSHEDDING) { observer->serverOverloaded(); } else { observer->taskKilled(); } } // Nothing to do for Thrift oneway request. if (req.isOneway()) { return; } // Thrift1 oneway request doesn't use ONEWAY_REQUEST_ID and // may end up here. No need to send error back for such requests if (!processor_->isOnewayMethod(req.getBuf(), channel_->getHeader())) { apache::thrift::TApplicationException x(reason, comment); req.sendError(std::make_exception_ptr(x), kOverloadedErrorCode); } else { // Send an empty request so reqId will be handler properly req.sendReply(std::unique_ptr<folly::IOBuf>()); } }
void Cpp2Connection::killRequest( ResponseChannel::Request& req, TApplicationException::TApplicationExceptionType reason, const std::string& errorCode, const char* comment) { VLOG(1) << "ERROR: Task killed: " << comment << ": " << context_.getPeerAddress()->getAddressStr(); auto server = worker_->getServer(); auto observer = server->getObserver(); if (observer) { if (reason == TApplicationException::TApplicationExceptionType::LOADSHEDDING) { observer->serverOverloaded(); } else { observer->taskKilled(); } } // Nothing to do for Thrift oneway request. if (req.isOneway()) { return; } auto header_req = static_cast<HeaderServerChannel::HeaderRequest*>(&req); // Thrift1 oneway request doesn't use ONEWAY_REQUEST_ID and // may end up here. No need to send error back for such requests if (!processor_->isOnewayMethod(req.getBuf(), header_req->getHeader())) { header_req->sendErrorWrapped( folly::make_exception_wrapper<TApplicationException>(reason, comment), errorCode, nullptr); } else { // Send an empty response so reqId will be handled properly req.sendReply(std::unique_ptr<folly::IOBuf>()); } }