Fix a bug where the parent's timeout is not cancelled in RetryingClient
#5896
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
Originally, when a request is derived, the parent's timeout scheduler is not canceled. This was not a problem until the
ResponseTimeoutMode.FROM_START
feature was added because the timeout did not start at this point.When
ResponseTimeoutMode.FROM_START
is set, a timeout task is scheduled before it is derived. So it needs to be canceled. Otherwise, the uncanceled scheduler task may cause a leak because referenced objects are not GC'd until the task is completed.Modifications:
Result:
Fixed a bug where timeout tasks leak when using
ResponseTimeoutMode.FROM_START
withRetryingClient
.