Browse Source

Merge "Add config option for neutron client retries" into stable/queens

changes/66/728766/1
Zuul 1 month ago
committed by Gerrit Code Review
parent
commit
94a23c8dcb
4 changed files with 37 additions and 1 deletions
  1. +14
    -0
      nova/conf/neutron.py
  2. +2
    -1
      nova/network/neutronv2/api.py
  3. +9
    -0
      nova/tests/unit/network/test_neutronv2.py
  4. +12
    -0
      releasenotes/notes/neutron-connection-retries-c276010afe238abc.yaml

+ 14
- 0
nova/conf/neutron.py View File

@@ -76,6 +76,20 @@ Neutron for extensions. After this number of seconds the next time Nova
needs to create a resource in Neutron it will requery Neutron for the
extensions that it has loaded. Setting value to 0 will refresh the
extensions with no wait.
"""),
cfg.IntOpt('http_retries',
default=3,
min=0,
help="""
Number of times neutronclient should retry on any failed http call.

0 means connection is attempted only once. Setting it to any positive integer
means that on failure connection is retried that many times e.g. setting it
to 3 means total attempts to connect will be 4.

Possible values:

* Any integer value. 0 means connection is attempted only once
"""),
]



+ 2
- 1
nova/network/neutronv2/api.py View File

@@ -163,7 +163,8 @@ def get_client(context, admin=False):

client_args = dict(session=_SESSION,
auth=auth_plugin,
global_request_id=context.global_id)
global_request_id=context.global_id,
connect_retries=CONF.neutron.http_retries)

if CONF.neutron.url:
# TODO(efried): Remove in Rocky


+ 9
- 0
nova/tests/unit/network/test_neutronv2.py View File

@@ -283,6 +283,15 @@ class TestNeutronClient(test.NoDBTestCase):
exception.Unauthorized,
client.list_networks)

def test_neutron_http_retries(self):
retries = 42
self.flags(http_retries=retries, group='neutron')
my_context = context.RequestContext('userid',
uuids.my_tenant,
auth_token='token')
cl = neutronapi.get_client(my_context)
self.assertEqual(retries, cl.httpclient.connect_retries)


class TestNeutronv2Base(test.TestCase):



+ 12
- 0
releasenotes/notes/neutron-connection-retries-c276010afe238abc.yaml View File

@@ -0,0 +1,12 @@
---
fixes:
- |
A new config option ``[neutron]http_retries`` is added which defaults to
3. It controls how many times to retry a Neutron API call in response to a
HTTP connection failure. An example scenario where it will help is when a
deployment is using HAProxy and connections get closed after idle time. If
an incoming request tries to re-use a connection that is simultaneously
being torn down, a HTTP connection failure will occur and previously Nova
would fail the entire request. With retries, Nova can be more resilient in
this scenario and continue the request if a retry succeeds. Refer to
https://launchpad.net/bugs/1866937 for more details.

Loading…
Cancel
Save