[retry] don't start a new call attempt if the timer was cancelled (#35729)

Fixes #34844.

Closes #35729

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35729 from markdroth:retry_fix 899cb370ba
PiperOrigin-RevId: 603060248
pull/35761/head
Mark D. Roth 10 months ago committed by Copybara-Service
parent 58300b9d1f
commit 6259028f10
  1. 6
      src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc

@ -2020,8 +2020,10 @@ void RetryFilter::LegacyCallData::OnRetryTimer() {
void RetryFilter::LegacyCallData::OnRetryTimerLocked(
void* arg, grpc_error_handle /*error*/) {
auto* calld = static_cast<RetryFilter::LegacyCallData*>(arg);
calld->retry_timer_handle_.reset();
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
if (calld->retry_timer_handle_.has_value()) {
calld->retry_timer_handle_.reset();
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
}
GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
}

Loading…
Cancel
Save