Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pkg: add a new retry to support the error isRetryable or not #1848

Merged
merged 26 commits into from
Jun 25, 2021

Conversation

ben1009
Copy link
Contributor

@ben1009 ben1009 commented May 26, 2021

What problem does this PR solve?

  • intention is try to solve Fail-fast for unrecoverable DML errors Fail-fast for unrecoverable DML errors #1724, for now add a new retry pkg, will try to replace the current retry usage later
  • add functional options feature to better support extend the retry ability
  • return ctx.Error() when got canceled instead of just return err, for more detail check Give reason for Stop cenkalti/backoff#97
  • support RunWithInfiniteRetry and RunSpecificTimesRetry in one func with WithInfiniteTries, WithMaxTries Option
  • change the param from WithMaxRetries to WithMaxTries for better understanding
        just paste some comments from test

        err := Run(500*time.Millisecond, 3, f)
	c.Assert(err, check.ErrorMatches, "test")
	// It's weird that backoff may retry one more time than maxTries.
	// Because the steps in backoff.Retry is:
	// 1. Call function
	// 2. Compare numTries and maxTries
	// 3. Increment numTries
	c.Assert(callCount, check.Equals, 3+1)

What is changed and how it works?

add a new implementation of retry to support config error retry or not

Check List

Tests

  • Unit test

Code changes

  • Has new function added

Related changes

  • Need to cherry-pick to the release branch

Release note

@ti-chi-bot ti-chi-bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label May 26, 2021
pkg/retry/options.go Outdated Show resolved Hide resolved
pkg/retry/retry_with_opt.go Outdated Show resolved Hide resolved
pkg/retry/retry_test.go Outdated Show resolved Hide resolved
pkg/retry/retry_with_opt.go Outdated Show resolved Hide resolved
@liuzix
Copy link
Contributor

liuzix commented May 27, 2021

Can we make use of github.com/cenkalti/backoff?

@ben1009
Copy link
Contributor Author

ben1009 commented May 27, 2021

Can we make use of github.com/cenkalti/backoff?

i also want reuse github.com/cenkalti/backoff at the first place, but after check the code, seems rewrite could be easier than add the feature i want in the pkg, for instance check the issues https://github.com/cenkalti/backoff/issues

@ben1009 ben1009 added the status/ptal Could you please take a look? label May 27, 2021
pkg/retry/options.go Outdated Show resolved Hide resolved
pkg/retry/retry_test.go Outdated Show resolved Hide resolved
pkg/retry/retry_test.go Outdated Show resolved Hide resolved
pkg/retry/retry_test.go Outdated Show resolved Hide resolved
pkg/retry/retry_test.go Outdated Show resolved Hide resolved
pkg/retry/retry_test.go Outdated Show resolved Hide resolved
pkg/retry/retry_with_opt.go Outdated Show resolved Hide resolved
pkg/retry/retry_with_opt.go Show resolved Hide resolved
@overvenus
Copy link
Member

What's your next step in solving #1724?

@ben1009
Copy link
Contributor Author

ben1009 commented May 27, 2021

What's your next step in solving #1724?

will make the change in another pr, since have 10+ usage exclude tests, do not want involve too many changes in one place.

  • replace current retry pkg with this one
  • config WithIsRetryableErr for differenet cases
  • add more tests

pkg/retry/options.go Outdated Show resolved Hide resolved
pkg/retry/options.go Outdated Show resolved Hide resolved
pkg/retry/options.go Show resolved Hide resolved
pkg/retry/options.go Outdated Show resolved Hide resolved
pkg/retry/options.go Show resolved Hide resolved
pkg/retry/retry_with_opt.go Outdated Show resolved Hide resolved
@ben1009
Copy link
Contributor Author

ben1009 commented May 28, 2021

/run-all-tests

@ben1009
Copy link
Contributor Author

ben1009 commented Jun 23, 2021

/run-integration-tests

@ben1009
Copy link
Contributor Author

ben1009 commented Jun 23, 2021

/run-kafka-tests

2 similar comments
@ben1009
Copy link
Contributor Author

ben1009 commented Jun 23, 2021

/run-kafka-tests

@ben1009
Copy link
Contributor Author

ben1009 commented Jun 23, 2021

/run-kafka-tests

Copy link
Member

@overvenus overvenus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ti-chi-bot
Copy link
Member

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • amyangfei
  • overvenus

To complete the pull request process, please ask the reviewers in the list to review by filling /cc @reviewer in the comment.
After your PR has acquired the required number of LGTMs, you can assign this pull request to the committer in the list by filling /assign @committer in the comment to help you merge this pull request.

The full list of commands accepted by this bot can be found here.

Reviewer can indicate their review by submitting an approval review.
Reviewer can cancel approval by submitting a request changes review.

@ti-chi-bot ti-chi-bot added status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Jun 24, 2021
@overvenus overvenus added needs-cherry-pick-release-4.0 Should cherry pick this PR to release-4.0 branch. needs-cherry-pick-release-5.0 Should cherry pick this PR to release-5.0 branch. needs-cherry-pick-release-5.1 Should cherry pick this PR to release-5.1 branch. labels Jun 24, 2021
@overvenus
Copy link
Member

/merge

@ti-chi-bot
Copy link
Member

This pull request has been accepted and is ready to merge.

Commit hash: 6493364

@ti-chi-bot ti-chi-bot added the status/can-merge Indicates a PR has been approved by a committer. label Jun 24, 2021
@ben1009
Copy link
Contributor Author

ben1009 commented Jun 25, 2021

/run-integration-tests

@codecov-commenter
Copy link

Codecov Report

Merging #1848 (13dea49) into master (0138edc) will increase coverage by 14.7797%.
The diff coverage is 60.9587%.

@@                Coverage Diff                @@
##             master      #1848         +/-   ##
=================================================
+ Coverage   37.8006%   52.5803%   +14.7797%     
=================================================
  Files           110        171         +61     
  Lines         11394      18583       +7189     
=================================================
+ Hits           4307       9771       +5464     
- Misses         6662       7762       +1100     
- Partials        425       1050        +625     

@ti-chi-bot
Copy link
Member

In response to a cherrypick label: new pull request created: #2157.

@ti-chi-bot
Copy link
Member

In response to a cherrypick label: new pull request created: #2158.

@ti-chi-bot
Copy link
Member

In response to a cherrypick label: new pull request created: #2159.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-cherry-pick-release-4.0 Should cherry pick this PR to release-4.0 branch. needs-cherry-pick-release-5.0 Should cherry pick this PR to release-5.0 branch. needs-cherry-pick-release-5.1 Should cherry pick this PR to release-5.1 branch. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2. status/ptal Could you please take a look?
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants