Switch TaskFlow engine to parallel
The default TaskFlow engine is now set to 'parallel' instead of 'serial'. The parallel engine schedules tasks onto different threads to allow for running non-dependent tasks simultaneously. This has the benefit of accelerating the execution of some Octavia Amphora flows such as provisioning of active-standby amphora loadbalancers. Change-Id: I108b7f629d39c40b60ddf4a1878631f32e37b357
This commit is contained in:
parent
6e4da85064
commit
0978c776a2
@ -254,7 +254,12 @@
|
||||
# user_data_config_drive = False
|
||||
|
||||
[task_flow]
|
||||
# engine = serial
|
||||
# TaskFlow engine options are:
|
||||
# - serial: Runs all tasks on a single thread.
|
||||
# - parallel: Schedules tasks onto different threads to allow
|
||||
# for running non-dependent tasks simultaneously
|
||||
#
|
||||
# engine = parallel
|
||||
# max_workers = 5
|
||||
#
|
||||
# This setting prevents the controller worker from reverting taskflow flows.
|
||||
|
@ -429,8 +429,12 @@ controller_worker_opts = [
|
||||
|
||||
task_flow_opts = [
|
||||
cfg.StrOpt('engine',
|
||||
default='serial',
|
||||
help=_('TaskFlow engine to use')),
|
||||
default='parallel',
|
||||
choices=constants.SUPPORTED_TASKFLOW_ENGINE_TYPES,
|
||||
help=_('TaskFlow engine to use. '
|
||||
'serial - Runs all tasks on a single thread. '
|
||||
'parallel - Schedules tasks onto different threads to '
|
||||
'allow for running non-dependent tasks simultaneously')),
|
||||
cfg.IntOpt('max_workers',
|
||||
default=5,
|
||||
help=_('The maximum number of workers')),
|
||||
|
@ -280,6 +280,9 @@ HTTP_QUOTED_HEADER_VALUE_REGEX = (r'\A"[a-zA-Z0-9 \t'
|
||||
DOMAIN_NAME_REGEX = (
|
||||
r'^(?=.{1,253}\.?$)(?:(?!-|[^.]+_)[A-Za-z0-9-_]{1,63}(?<!-)(?:\.|$))+$')
|
||||
|
||||
# TaskFlow
|
||||
SUPPORTED_TASKFLOW_ENGINE_TYPES = ['serial', 'parallel']
|
||||
|
||||
# Task/Flow constants
|
||||
AMPHORA = 'amphora'
|
||||
FAILED_AMPHORA = 'failed_amphora'
|
||||
|
@ -25,6 +25,7 @@ import octavia.tests.unit.base as base
|
||||
|
||||
|
||||
MAX_WORKERS = 1
|
||||
ENGINE = 'parallel'
|
||||
|
||||
_engine_mock = mock.MagicMock()
|
||||
|
||||
@ -35,7 +36,7 @@ class TestBaseTaskFlowEngine(base.TestCase):
|
||||
|
||||
conf = oslo_fixture.Config(cfg.CONF)
|
||||
conf.config(group="task_flow", max_workers=MAX_WORKERS)
|
||||
conf.config(group="task_flow", engine='TESTENGINE')
|
||||
conf.config(group="task_flow", engine=ENGINE)
|
||||
conf.config(group="task_flow", disable_revert=True)
|
||||
super(TestBaseTaskFlowEngine, self).setUp()
|
||||
|
||||
@ -60,7 +61,7 @@ class TestBaseTaskFlowEngine(base.TestCase):
|
||||
|
||||
tf_engines.load.assert_called_once_with(
|
||||
'TEST',
|
||||
engine='TESTENGINE',
|
||||
engine=ENGINE,
|
||||
executor='TESTEXECUTOR',
|
||||
never_resolve=True)
|
||||
|
||||
|
@ -0,0 +1,10 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The default TaskFlow engine is now set to 'parallel' instead of 'serial'.
|
||||
The parallel engine schedules tasks onto different threads to allow for
|
||||
running non-dependent tasks simultaneously. This has the benefit of
|
||||
accelerating the execution of some Octavia Amphora flows such as
|
||||
provisioning of active-standby amphora loadbalancers. Operators can revert
|
||||
to previously default 'serial' engine type by setting the configuration
|
||||
option [task_flow]/engine = serial
|
Loading…
Reference in New Issue
Block a user