Skip to content

Commit 21682f7

Browse files
committed
Fix haproxy global maxconn with disabled listeners
global maxconn value is based on the connection-limit of the listeners of a LB, but it includes the connection-limit of disabled listeners. Disabled listeners are now skipped. Closes-Bug: #2024371 Change-Id: I45500d618b307f740b8e692c49f5efdd27dc10a0
1 parent e2bc072 commit 21682f7

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ def _transform_loadbalancer(self, host_amphora, loadbalancer, listeners,
265265
# listeners' connection limits.
266266
connection_limit_sum = 0
267267
for listener in listeners:
268+
if not listener.enabled:
269+
continue
268270
if listener.protocol in constants.LVS_PROTOCOLS:
269271
continue
270272
if listener.connection_limit and listener.connection_limit > -1:

octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,6 +1559,28 @@ def test_transform_many_loadbalancers(self):
15591559
self.assertLess(ret['global_connection_limit'],
15601560
connection_limit_sum)
15611561

1562+
def test_transform_with_disabled_listeners(self):
1563+
in_amphora = sample_configs_combined.sample_amphora_tuple()
1564+
1565+
in_listeners = []
1566+
1567+
connection_limit_sum = 0
1568+
1569+
in_listener = (
1570+
sample_configs_combined.sample_listener_tuple())
1571+
connection_limit_sum += constants.HAPROXY_DEFAULT_MAXCONN
1572+
in_listeners.append(in_listener)
1573+
1574+
disabled_listener = (
1575+
sample_configs_combined.sample_listener_tuple(enabled=False))
1576+
in_listeners.append(disabled_listener)
1577+
1578+
ret = self.jinja_cfg._transform_loadbalancer(
1579+
in_amphora, in_listeners[0].load_balancer,
1580+
in_listeners, None, {})
1581+
self.assertEqual(ret['global_connection_limit'],
1582+
connection_limit_sum)
1583+
15621584
def test_transform_amphora(self):
15631585
in_amphora = sample_configs_combined.sample_amphora_tuple()
15641586
ret = self.jinja_cfg._transform_amphora(in_amphora, {})
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
fixes:
3+
- |
4+
Fixed the global number of concurrent connections in haproxy when disabling
5+
listeners. The connection-limit of disabled listeners was used to compute
6+
this value, disabled listeners are now skipped.

0 commit comments

Comments
 (0)