From 0978c776a2c9f6cc992a8fcf0d06c981d98d9412 Mon Sep 17 00:00:00 2001 From: Carlos Goncalves Date: Wed, 14 Aug 2019 11:26:29 +0200 Subject: [PATCH] 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 --- etc/octavia.conf | 7 ++++++- octavia/common/config.py | 8 ++++++-- octavia/common/constants.py | 3 +++ octavia/tests/unit/common/test_base_taskflow.py | 5 +++-- ...itch-taskflow-engine-parallel-8bf743eca15a0253.yaml | 10 ++++++++++ 5 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 releasenotes/notes/switch-taskflow-engine-parallel-8bf743eca15a0253.yaml diff --git a/etc/octavia.conf b/etc/octavia.conf index 66268d7089..c1d664fbe2 100644 --- a/etc/octavia.conf +++ b/etc/octavia.conf @@ -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. diff --git a/octavia/common/config.py b/octavia/common/config.py index fbd85a1a97..413932f8c1 100644 --- a/octavia/common/config.py +++ b/octavia/common/config.py @@ -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')), diff --git a/octavia/common/constants.py b/octavia/common/constants.py index 1155708ec6..0944b56087 100644 --- a/octavia/common/constants.py +++ b/octavia/common/constants.py @@ -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}(?