Skip to content

Releases: rhuffman/re-retrying

Release 4.0.0

25 Feb 14:33
d4991fb
Compare
Choose a tag to compare
Release 4.0.0 Pre-release
Pre-release

Improvements to the API

Primary features

  • Retryer and RetryerBuilder no longer require a class-level parameter. A given Retryer can now be used with Callables that return any type.
  • Retryer can now be used to retry a Runnable

API changes

  • Retryer no longer has public constructors: the RetryerBuilder must be used to create them
  • Retryer.call no longer throws ExecutionException. If the Callable throws an exception that causes retrying to stop, it is always wrapped in a RetryException before throwing. This includes any unchecked exceptions.
  • Retryer.call now propagates InterruptedException. Previously, if the thread was interrupted, it would throw an unchecked Exception and set the interrupted state on the thread.
  • Retryer has a new method, void run(Runnable). It works similarly to the call method. However, if a Retryer is built with RetryerBuilder.retryIfResult, then the Predicate will be invoked with a "null" when Retryer.run is used. It would probably be best not to Retryer.run with RetryerBuilder.retryIfResult, but you can also simply insure your Predicate handles a null value.
  • Predicates used by RetryerBuilder are now of type java.util.function.Predicate instead of com.google.common.base.Predicate.

Semantic changes

  • Retry strategies that attempt to retry on an InterruptedException no longer work: any InterruptedException thrown by a Callable is immediately thrown by the retry method. This is because of the fix for #36.

Issues Resolved since Release 3.0.0

#13 Retryer should work for Runnables
#15 Clean up Intellij warnings
#17 Every call to AttemptTimeLimiter.fixedTimeLimit creates a new CachedThreadPool
#20 A given Retryer should be usable with Callable of any type
#22 Stop wrapping exceptions thrown by the retried Callables in ExecutionExceptions
#24 Better handling of InterruptedException in Retryer.call
#27 Attempt.getAttemptNumber can return int instead of long
#29 Clean up the build file
#30 Use Java Predicates
#36 InterruptedException thrown by a Callable is not handled correctly

Release 3.0.0

29 Sep 22:00
Compare
Choose a tag to compare

Initial stable release after forking from rholder/guava-retrying.

Primary Features

Updated to use Java 8 and Guava 23.0

Issues Resolved since Release 2.0.0

#1 Guava should be pinned to a specific version
#2 Building shows several Javadoc warnings
#3 Version of gradle is relatively old
#5 Project needs to be updated to reflect that it is a fork of guava-retrying
#8 Cannot be compiled with Guava 23
#12 The JSR dependency can be compileOnly

Release 3.0.0-rc.2

29 Sep 12:09
Compare
Choose a tag to compare
Release 3.0.0-rc.2 Pre-release
Pre-release

Fixed additional issue with the JSR dependency

Issues Resolved

#12 The JSR dependency can be compileOnly

Release 3.0.0-rc.1

28 Sep 16:38
Compare
Choose a tag to compare
Release 3.0.0-rc.1 Pre-release
Pre-release

Initial release after forking from rholder/guava-retrying.

Primary Features

Updated to use Java 8 and Guava 23.0

Issues Resolved

#1 Guava should be pinned to a specific version
#2 Building shows several Javadoc warnings
#3 Version of gradle is relatively old
#5 Project needs to be updated to reflect that it is a fork of guava-retrying
#8 Cannot be compiled with Guava 23