Cancel outstanding streams when shutting down the client

pull/12623/head
Vijay Pai 7 years ago
parent 574faf3b05
commit 43b55221e4
  1. 9
      test/cpp/qps/client_async.cc

@ -56,6 +56,7 @@ class ClientRpcContext {
}
virtual void Start(CompletionQueue* cq, const ClientConfig& config) = 0;
virtual void TryCancel() = 0;
};
template <class RequestType, class ResponseType>
@ -110,6 +111,7 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
prepare_req_, callback_);
clone->StartInternal(cq);
}
void TryCancel() override { context_.TryCancel(); }
private:
grpc::ClientContext context_;
@ -142,8 +144,6 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
}
};
typedef std::forward_list<ClientRpcContext*> context_list;
template <class StubType, class RequestType>
class AsyncClient : public ClientImpl<StubType, RequestType> {
// Specify which protected members we are using since there is no
@ -247,6 +247,7 @@ class AsyncClient : public ClientImpl<StubType, RequestType> {
// this thread isn't supposed to shut down
std::lock_guard<std::mutex> l(shutdown_state_[thread_idx]->mutex);
if (shutdown_state_[thread_idx]->shutdown) {
ctx->TryCancel();
delete ctx;
return true;
}
@ -388,6 +389,7 @@ class ClientRpcContextStreamingPingPongImpl : public ClientRpcContext {
stub_, req_, next_issue_, prepare_req_, callback_);
clone->StartInternal(cq, messages_per_stream_);
}
void TryCancel() override { context_.TryCancel(); }
private:
grpc::ClientContext context_;
@ -527,6 +529,7 @@ class ClientRpcContextStreamingFromClientImpl : public ClientRpcContext {
stub_, req_, next_issue_, prepare_req_, callback_);
clone->StartInternal(cq);
}
void TryCancel() override { context_.TryCancel(); }
private:
grpc::ClientContext context_;
@ -644,6 +647,7 @@ class ClientRpcContextStreamingFromServerImpl : public ClientRpcContext {
stub_, req_, next_issue_, prepare_req_, callback_);
clone->StartInternal(cq);
}
void TryCancel() override { context_.TryCancel(); }
private:
grpc::ClientContext context_;
@ -786,6 +790,7 @@ class ClientRpcContextGenericStreamingImpl : public ClientRpcContext {
stub_, req_, next_issue_, prepare_req_, callback_);
clone->StartInternal(cq, messages_per_stream_);
}
void TryCancel() override { context_.TryCancel(); }
private:
grpc::ClientContext context_;

Loading…
Cancel
Save