Fix task_flow.max_workers with persistence in amphorav2

When jobboard was enabled in amphorav2, the [task_flow]/max_workers
option was unused, updating a LB with a lot of children could have
failed because of dozens of concurrent connections to the database.

Story 2008860
Task 42381

Change-Id: I5341949513e6eb814655ee8f14a01b061894fc34
(cherry picked from commit c5287e1b08)
This commit is contained in:
Gregory Thiemonge 2021-04-27 10:08:36 +02:00 committed by Carlos Goncalves
parent 46979a0d1b
commit a53e2eabe3
2 changed files with 9 additions and 2 deletions

View File

@ -165,7 +165,10 @@ class TaskFlowServiceController(object):
'redis_taskflow_driver'):
conductor = RedisDynamicLoggingConductor(
name, board, persistence=persistence,
engine=CONF.task_flow.engine)
engine=CONF.task_flow.engine,
engine_options={
'max_workers': CONF.task_flow.max_workers
})
board.claim = functools.partial(
board.claim,
expiry=CONF.task_flow.jobboard_expiration_time)

View File

@ -75,6 +75,7 @@ class TestTaskFlowServiceController(base.TestCase):
def setUp(self):
self.conf = oslo_fixture.Config(cfg.CONF)
self.conf.config(group="task_flow", engine='parallel')
self.conf.config(group="task_flow", max_workers=MAX_WORKERS)
self.driver_mock = mock.MagicMock()
self.persistence_mock = mock.MagicMock()
self.jobboard_mock = mock.MagicMock()
@ -140,7 +141,10 @@ class TestTaskFlowServiceController(base.TestCase):
rediscond.assert_called_once_with(
"test", self.jobboard_mock.__enter__(),
persistence=self.persistence_mock.__enter__(),
engine='parallel')
engine='parallel',
engine_options={
'max_workers': MAX_WORKERS,
})
self.conf.config(group="task_flow",
jobboard_backend_driver='zookeeper_taskflow_driver')