Activity log for bug #1635383

Date Who What changed Old value New value Message
2016-10-20 19:22:43 Boden R bug added bug
2016-10-20 19:34:40 Boden R 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/topic:retrying-to-tenacity [6] http://codesearch.openstack.org/?q=retrying&i=nope&files=.*.txt&repos= 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=
2016-11-11 01:59:12 Zhijiang Hu daisycloud-core: status New In Progress
2016-11-11 01:59:20 Zhijiang Hu daisycloud-core: importance Undecided Medium