|  | @@ -143,21 +143,24 @@ class AsyncQpsServerTest {
 | 
	
		
			
				|  |  |        delete contexts_.front();
 | 
	
		
			
				|  |  |        contexts_.pop_front();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    for (auto& thr: threads_) {
 | 
	
		
			
				|  |  | +      thr.join();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    void ServeRpcs(int num_threads) {
 | 
	
		
			
				|  |  | -    std::vector<std::thread> threads;
 | 
	
		
			
				|  |  |      for (int i = 0; i < num_threads; i++) {
 | 
	
		
			
				|  |  | -      threads.push_back(std::thread([=]() {
 | 
	
		
			
				|  |  | +      threads_.push_back(std::thread([=]() {
 | 
	
		
			
				|  |  |          // Wait until work is available or we are shutting down
 | 
	
		
			
				|  |  |          bool ok;
 | 
	
		
			
				|  |  |          void *got_tag;
 | 
	
		
			
				|  |  |          while (srv_cq_.Next(&got_tag, &ok)) {
 | 
	
		
			
				|  |  | -          EXPECT_EQ(ok, true);
 | 
	
		
			
				|  |  | -          ServerRpcContext *ctx = detag(got_tag);
 | 
	
		
			
				|  |  | -          // The tag is a pointer to an RPC context to invoke
 | 
	
		
			
				|  |  | -          if (ctx->RunNextState() == false) {
 | 
	
		
			
				|  |  | -            // this RPC context is done, so refresh it
 | 
	
		
			
				|  |  | -            ctx->Reset();
 | 
	
		
			
				|  |  | +          if (ok) {
 | 
	
		
			
				|  |  | +            ServerRpcContext *ctx = detag(got_tag);
 | 
	
		
			
				|  |  | +            // The tag is a pointer to an RPC context to invoke
 | 
	
		
			
				|  |  | +            if (ctx->RunNextState() == false) {
 | 
	
		
			
				|  |  | +              // this RPC context is done, so refresh it
 | 
	
		
			
				|  |  | +              ctx->Reset();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return;
 | 
	
	
		
			
				|  | @@ -260,6 +263,7 @@ class AsyncQpsServerTest {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    CompletionQueue srv_cq_;
 | 
	
		
			
				|  |  |    TestService::AsyncService async_service_;
 | 
	
		
			
				|  |  | +  std::vector<std::thread> threads_;
 | 
	
		
			
				|  |  |    std::unique_ptr<Server> server_;
 | 
	
		
			
				|  |  |    std::function<void(ServerContext *, SimpleRequest *,
 | 
	
		
			
				|  |  |                       grpc::ServerAsyncResponseWriter<SimpleResponse> *, void *)>
 |