Merge pull request #23416 from vjpai/ccet

Make sure that some test ops don't start concurrently with Finish
pull/23361/head
Vijay Pai 5 years ago committed by GitHub
commit 17b4879677
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      test/cpp/end2end/test_service_impl.cc

@ -501,13 +501,21 @@ CallbackTestServiceImpl::ResponseStream(
std::to_string(num_msgs_sent_));
if (num_msgs_sent_ == server_responses_to_send_ - 1 &&
server_coalescing_api_ != 0) {
num_msgs_sent_++;
StartWriteLast(&response_, WriteOptions());
{
std::lock_guard<std::mutex> l(finish_mu_);
if (!finished_) {
num_msgs_sent_++;
StartWriteLast(&response_, WriteOptions());
}
}
// If we use WriteLast, we shouldn't wait before attempting Finish
FinishOnce(Status::OK);
} else {
num_msgs_sent_++;
StartWrite(&response_);
std::lock_guard<std::mutex> l(finish_mu_);
if (!finished_) {
num_msgs_sent_++;
StartWrite(&response_);
}
}
}
experimental::CallbackServerContext* const ctx_;
@ -571,12 +579,15 @@ CallbackTestServiceImpl::BidiStream(
if (ok) {
num_msgs_read_++;
response_.set_message(request_.message());
if (num_msgs_read_ == server_write_last_) {
StartWriteLast(&response_, WriteOptions());
// If we use WriteLast, we shouldn't wait before attempting Finish
} else {
StartWrite(&response_);
return;
std::lock_guard<std::mutex> l(finish_mu_);
if (!finished_) {
if (num_msgs_read_ == server_write_last_) {
StartWriteLast(&response_, WriteOptions());
// If we use WriteLast, we shouldn't wait before attempting Finish
} else {
StartWrite(&response_);
return;
}
}
}

Loading…
Cancel
Save