Add max limit to agent_down_time

The agent_down_time ends up being passed to an eventlet green-thread;
under the hood, this uses a CPython C-types interface with a limitation
of (2^32 / 2 - 1) INT_MAX (as defined in C) where int is usually 32 bits

I have set the max value to (2^32 / 2 - 1)/1000 as agent_down_time
configured in seconds, this ends up being 2147483.

This patch is required as passing a larger number
causes this error: OverflowError: timeout is too large

If a user currently has a value larger than (2^32 / 2 - 1)/1000 set,
Neutron Server will fail to start and will print out a very helpful
error message.

Closes-Bug: #2028724
Change-Id: Ib5b943344cddbd468c00768461ba1ee00a2b4c58
This commit is contained in:
Lewis Denny 2023-07-31 16:38:22 +10:00
parent de2494da5f
commit 6fef1e6525
2 changed files with 11 additions and 0 deletions

View File

@ -16,7 +16,12 @@ from neutron._i18n import _
from neutron.common import _constants from neutron.common import _constants
AGENT_OPTS = [ AGENT_OPTS = [
# The agent_down_time value can only be a max of INT_MAX (as defined in C),
# where int is usually 32 bits. The agent_down_time will be passed to
# eventlet in milliseconds and any number higher will produce an OverFlow
# error. More details here: https://bugs.launchpad.net/neutron/+bug/2028724
cfg.IntOpt('agent_down_time', default=75, cfg.IntOpt('agent_down_time', default=75,
max=((2**32 / 2 - 1) // 1000),
help=_("Seconds to regard the agent as down; should be at " help=_("Seconds to regard the agent as down; should be at "
"least twice report_interval, to be sure the " "least twice report_interval, to be sure the "
"agent is down for good.")), "agent is down for good.")),

View File

@ -0,0 +1,6 @@
---
fixes:
- |
The config option ``agent_down_time`` is now limited to a maximum value of
`2147483`, as neutron-server will fail to start if it is configured higher.
See bug `2028724 <https://bugs.launchpad.net/neutron/+bug/2028724>`_ for more information.