Skip to content
Dan Hackney edited this page Mar 27, 2018 · 3 revisions

The re-retrying project is a fork of https://github.com/rholder/guava-retrying, a library that "provides a general purpose method for retrying arbitrary Java code with specific stop, retry, and exception handling capabilities".

Why fork?

The primary reason for forking is because the original project no longer works with projects that include later versions of Google's Guava library. As of version 2.0, it declares an open-ended relative dependency on Guava:

com.google.guava:guava:[10.+,)

With this dependency, any project using guava-retrying will resolve Guava to the latest version available. Currently, that is Guava 23, and guava-retrying breaks when using that version of Guava at runtime.

Of course, that is easliy fixed. However, the guava-retrying project has not had a commit since May 16, 2016 (over 16 months ago, as of the time of this writing). It currently has 37 open issues and 13 open pull requests. One of the issues is for the open-ended Guava dependency.

It appears the maintainer has abandoned the project, and attempted communication with him over the past month has yielded no results. Forking at this point seems to be the only option.

Will the fork maintain compatibility with guava-retrying?

I do not intend to repackage the classes: they will remain in the package com.github.rholder. However, I am changing the group ID and artifact names. Since guava-retrying was at version 2.0 when it was apparently abandoned, I will start releasing at version 3.0.

If guava-retrying is ever revived, I will either abandon this project or simply continue diverging. I am not committing to maintaining compatibility with guava-retrying.

Clone this wiki locally