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

Return builder from a Retryer instance #43

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rholder
Copy link
Owner

@rholder rholder commented Jun 20, 2015

This returns the RetryerBuilder used to build the Retryer instance, if it exists, as described in #13. In adding this functionality, I noticed a few things that I believe make this feature less desirable.

The builder itself doesn't currently expose methods for inspecting the existing configured strategies so we'd need to add those which increases the public API footprint. Resetting the strategies upon inspection and then mutation (for the returned original builder) is currently not possible because of the checkState guards on most of the setters. We'd need to relax those checks to complete the use case described in #13 (or maybe expose another mechanism for safely returning/cloning and mutating in a single step?).

I am open to exploring other means of completing #13 than what I've created here or further expanding on this if there is still interest. In the mean time, I'm adding this as a PR such that I can continue moving a 2.x release forward without worrying about trying to get this feature completed before that ships.

@james-hu
Copy link

Adding the builder as a field in the object built doesn't smell good. I think a better solution is to add getXxx() methods in RetryerBuilder (suggested) and/or Retryer (not suggested. "if you expect me to do a final touch on the retry logic, you should pass in a RetryerBuilder instance rather than a Retryer instance") so that whenever needed those XxxStrategy objects can be get and used to build another Retryer. This solution is more flexible in terms of supporting creative use cases and it has no impact on the core logic at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants