<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 20, 2016 at 3:10 PM, Boden Russell <span dir="ltr"><<a href="mailto:bodenvmw@gmail.com" target="_blank">bodenvmw@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Today there are a number of places in nova, neutron and perhaps<br>
elsewhere that employ backoff + timeout strategies (see [1] - [4]).<br>
While we are working towards a unified approach in neutron for RPC [5],<br>
it appears such logic could benefit the greater community as a reusable<br>
oslo implementation.<br>
<br>
IMHO such an oslo implementation could:<br>
- Enable backoff/timeout irrespective of client/transport. This would<br>
allow the utils to be used with various clients (HTTP, AMQP RPC, etc.).<br>
- Support namespacing as inspired by the existing neutron patch [5].<br>
- In the future, perhaps, allow multiple (pluggable) backoff strategies<br>
to be used (e.g. configurable backoff).<br>
<br>
Anyone adverse to me crafting an initial oslo patch to kick-off the<br>
details on this one?<br>
<br>
<br>
Thanks<br>
<br>
<br>
[1] <a href="https://github.com/openstack/nova/blob/master/nova/conductor/api.py#L162" rel="noreferrer" target="_blank">https://github.com/openstack/nova/blob/master/nova/conductor/api.py#L162</a><br>
[2]<br>
<a href="https://github.com/openstack/nova/blob/3cdaa30566c17a2add5d9163a0693c97dc1d065b/nova/scheduler/utils.py#L356" rel="noreferrer" target="_blank">https://github.com/openstack/nova/blob/3cdaa30566c17a2add5d9163a0693c97dc1d065b/nova/scheduler/utils.py#L356</a><br>
[3]<br>
<a href="https://github.com/openstack/neutron/blob/dd4f1253c951d78a5b497680dfb31317ba469a58/neutron/agent/l3/agent.py#L224" rel="noreferrer" target="_blank">https://github.com/openstack/neutron/blob/dd4f1253c951d78a5b497680dfb31317ba469a58/neutron/agent/l3/agent.py#L224</a><br>
[4]<br>
<a href="https://github.com/openstack/neutron/blob/42c6f05f2904cd4c01bcd3f79b1966489f5ad3c1/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py#L189" rel="noreferrer" target="_blank">https://github.com/openstack/neutron/blob/42c6f05f2904cd4c01bcd3f79b1966489f5ad3c1/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py#L189</a><br>
[5] <a href="https://review.openstack.org/#/c/280595/" rel="noreferrer" target="_blank">https://review.openstack.org/#/c/280595/</a><br>
<br></blockquote><div><br></div><div>oslo.utils has a decorator that will retry after a delay - <a href="http://docs.openstack.org/developer/oslo.utils/api/excutils.html#oslo_utils.excutils.forever_retry_uncaught_exceptions">http://docs.openstack.org/developer/oslo.utils/api/excutils.html#oslo_utils.excutils.forever_retry_uncaught_exceptions</a> , which doesn't do backoff would be easy enough to add. Alternatively, if an existing library works better, maybe the oslo utility should be deprecated.<br></div><div><br></div><div>- Brant<br><br></div></div></div></div>