Public bug reported:

Today a number of OpenStack projects use the 'retrying' library [1] for
generic retry behavior. While retrying provides a functional API, its
author no longer actively maintains the repo and hasn't responded to
numerous PRs, emails, etc. (more discussion in [2]). As a result, we
can't push fixes/features to retrying to support various initiatives
such as [3].

A fellow stacker graciously forked the retrying repo and revamped it's API to 
provide greater functionality/pluggablility; called tenacity [4]. While 
tenacity provides the same functionality as retrying, it has some notable 
differences such as:
- Tenacity uses seconds rather than ms as retrying did.
- Tenacity has different kwargs for the decorator and
Retrying class itself.
- Tenacity has a different approach for retrying args by
using classes for its stop/wait/retry kwargs.
- By default tenacity raises a RetryError if a retried callable
times out; retrying raises the last exception from the callable.
Tenacity provides backwards compatibility here by offering
the 'reraise' kwarg.
- Tenacity defines 'time.sleep' as a default value for a kwarg.
That said consumers who need to mock patch time.sleep
need to account for this via mocking of time.sleep before
tenacity is imported.
- For retries that check a result, tenacity will raise if the retried
function raises, whereas retrying retried on all exceptions.

We'd like to move from retrying to tenacity and eventually remove
retrying from global requirements all together.

For projects using retrying, the move to tenacity (hopefully) isn't
overly intrusive, but must take the above differences into
consideration.

While I'm working to move all affected projects [6] from retrying to
tenacity, this effort is a work in progress (under [5]).

[1] https://github.com/rholder/retrying
[2] https://review.openstack.org/#/c/321867/
[3] http://lists.openstack.org/pipermail/openstack-dev/2016-April/092914.html
[4] https://github.com/jd/tenacity
[5] 
https://review.openstack.org/#/q/message:%22Replace+retrying+with+tenacity%22
[6] http://codesearch.openstack.org/?q=retrying&i=nope&files=.*.txt&repos=

** Affects: glance
     Importance: Undecided
         Status: New

** Description changed:

  Today a number of OpenStack projects use the 'retrying' library [1] for
  generic retry behavior. While retrying provides a functional API, its
  author no longer actively maintains the repo and hasn't responded to
  numerous PRs, emails, etc. (more discussion in [2]). As a result, we
  can't push fixes/features to retrying to support various initiatives
  such as [3].
  
  A fellow stacker graciously forked the retrying repo and revamped it's API to 
provide greater functionality/pluggablility; called tenacity [4]. While 
tenacity provides the same functionality as retrying, it has some notable 
differences such as:
  - Tenacity uses seconds rather than ms as retrying did.
  - Tenacity has different kwargs for the decorator and
  Retrying class itself.
  - Tenacity has a different approach for retrying args by
  using classes for its stop/wait/retry kwargs.
  - By default tenacity raises a RetryError if a retried callable
  times out; retrying raises the last exception from the callable.
  Tenacity provides backwards compatibility here by offering
  the 'reraise' kwarg.
  - Tenacity defines 'time.sleep' as a default value for a kwarg.
  That said consumers who need to mock patch time.sleep
  need to account for this via mocking of time.sleep before
  tenacity is imported.
  - For retries that check a result, tenacity will raise if the retried
  function raises, whereas retrying retried on all exceptions.
  
  We'd like to move from retrying to tenacity and eventually remove
  retrying from global requirements all together.
  
  For projects using retrying, the move to tenacity (hopefully) isn't
  overly intrusive, but must take the above differences into
  consideration.
  
  While I'm working to move all affected projects [6] from retrying to
  tenacity, this effort is a work in progress (under [5]).
  
- 
  [1] https://github.com/rholder/retrying
  [2] https://review.openstack.org/#/c/321867/
  [3] http://lists.openstack.org/pipermail/openstack-dev/2016-April/092914.html
  [4] https://github.com/jd/tenacity
- [5] https://review.openstack.org/#/q/topic:retrying-to-tenacity
+ [5] 
https://review.openstack.org/#/q/message:%22Replace+retrying+with+tenacity%22
  [6] http://codesearch.openstack.org/?q=retrying&i=nope&files=.*.txt&repos=

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1635387

Title:
  Replace usage of 'retrying' with 'tenacity'

Status in Glance:
  New

Bug description:
  Today a number of OpenStack projects use the 'retrying' library [1]
  for generic retry behavior. While retrying provides a functional API,
  its author no longer actively maintains the repo and hasn't responded
  to numerous PRs, emails, etc. (more discussion in [2]). As a result,
  we can't push fixes/features to retrying to support various
  initiatives such as [3].

  A fellow stacker graciously forked the retrying repo and revamped it's API to 
provide greater functionality/pluggablility; called tenacity [4]. While 
tenacity provides the same functionality as retrying, it has some notable 
differences such as:
  - Tenacity uses seconds rather than ms as retrying did.
  - Tenacity has different kwargs for the decorator and
  Retrying class itself.
  - Tenacity has a different approach for retrying args by
  using classes for its stop/wait/retry kwargs.
  - By default tenacity raises a RetryError if a retried callable
  times out; retrying raises the last exception from the callable.
  Tenacity provides backwards compatibility here by offering
  the 'reraise' kwarg.
  - Tenacity defines 'time.sleep' as a default value for a kwarg.
  That said consumers who need to mock patch time.sleep
  need to account for this via mocking of time.sleep before
  tenacity is imported.
  - For retries that check a result, tenacity will raise if the retried
  function raises, whereas retrying retried on all exceptions.

  We'd like to move from retrying to tenacity and eventually remove
  retrying from global requirements all together.

  For projects using retrying, the move to tenacity (hopefully) isn't
  overly intrusive, but must take the above differences into
  consideration.

  While I'm working to move all affected projects [6] from retrying to
  tenacity, this effort is a work in progress (under [5]).

  [1] https://github.com/rholder/retrying
  [2] https://review.openstack.org/#/c/321867/
  [3] http://lists.openstack.org/pipermail/openstack-dev/2016-April/092914.html
  [4] https://github.com/jd/tenacity
  [5] 
https://review.openstack.org/#/q/message:%22Replace+retrying+with+tenacity%22
  [6] http://codesearch.openstack.org/?q=retrying&i=nope&files=.*.txt&repos=

To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/1635387/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to