diff --git a/etc/evergreen_timeouts.yml b/etc/evergreen_timeouts.yml index f3be7309c5d..c0223f2e31e 100644 --- a/etc/evergreen_timeouts.yml +++ b/etc/evergreen_timeouts.yml @@ -78,3 +78,43 @@ overrides: ubuntu1804-asan: - task: aggregation_timeseries_fuzzer exec_timeout: 150 # 2.5 hours + + enterprise-rhel-83-s390x: + - task: ^archive_.* + exec_timeout: 840 # 14 hours + - task: ^compile_.* + exec_timeout: 840 # 14 hours + - task: ^stitch_.* + exec_timeout: 840 # 14 hours + - task: ^crypt_.* + exec_timeout: 840 # 14 hours + + enterprise-rhel-83-s390x-shared: + - task: ^archive_.* + exec_timeout: 840 # 14 hours + - task: ^compile_.* + exec_timeout: 840 # 14 hours + - task: ^stitch_.* + exec_timeout: 840 # 14 hours + - task: ^crypt_.* + exec_timeout: 840 # 14 hours + + enterprise-rhel-9-s390x: + - task: ^archive_.* + exec_timeout: 840 # 14 hours + - task: ^compile_.* + exec_timeout: 840 # 14 hours + - task: ^stitch_.* + exec_timeout: 840 # 14 hours + - task: ^crypt_.* + exec_timeout: 840 # 14 hours + + enterprise-rhel-9-s390x-shared: + - task: ^archive_.* + exec_timeout: 840 # 14 hours + - task: ^compile_.* + exec_timeout: 840 # 14 hours + - task: ^stitch_.* + exec_timeout: 840 # 14 hours + - task: ^crypt_.* + exec_timeout: 840 # 14 hours diff --git a/etc/evergreen_yml_components/definitions.yml b/etc/evergreen_yml_components/definitions.yml index 0f8e56adb18..ec35872f41b 100644 --- a/etc/evergreen_yml_components/definitions.yml +++ b/etc/evergreen_yml_components/definitions.yml @@ -137,6 +137,7 @@ variables: - func: "apply compile expansions" - func: "set task expansion macros" - func: "f_expansions_write" + - func: "override task timeout" teardown_task: - func: "f_expansions_write" - func: "attach scons logs" @@ -209,6 +210,7 @@ variables: - func: "apply compile expansions" - func: "set task expansion macros" - func: "f_expansions_write" + - func: "override task timeout" teardown_task: - func: "attach scons logs" - func: "send scons cedar report" @@ -716,6 +718,30 @@ functions: exec_timeout_secs: ${exec_timeout_secs} timeout_secs: ${timeout_secs} + "override task timeout": + - *f_expansions_write + - command: subprocess.exec + params: + binary: bash + args: + - "src/evergreen/run_python_script.sh" + - "evergreen/generate_override_timeout.py" + - "--variant_name" + - "${compile_variant}" + - "--task_name" + - "${task_name}" + - *f_expansions_write + - command: expansions.update + params: + ignore_missing_file: true + file: src/override_task_timeout.yml + - *f_expansions_write + - command: timeout.update + params: + exec_timeout_secs: ${override_task_timeout} + timeout_secs: ${override_task_timeout} + - *f_expansions_write + ### Set expansion macros used in each task. "set task expansion macros": &set_task_expansion_macros command: expansions.update @@ -8435,6 +8461,7 @@ task_groups: - func: "apply compile expansions" - func: "set task expansion macros" - func: "f_expansions_write" + - func: "override task timeout" teardown_task: - func: "attach scons logs" - func: "send scons cedar report" diff --git a/evergreen/generate_override_timeout.py b/evergreen/generate_override_timeout.py new file mode 100644 index 00000000000..1afd84ea9ef --- /dev/null +++ b/evergreen/generate_override_timeout.py @@ -0,0 +1,34 @@ +import argparse +import re + +import yaml + +parser = argparse.ArgumentParser() +parser.add_argument("--variant_name") +parser.add_argument("--task_name") +args = parser.parse_args() + +with open("etc/evergreen_yml_components/configuration.yml") as f: + yml = yaml.safe_load(f) + default_timeout = yml["exec_timeout_secs"] + +override_timeout = None +with open("etc/evergreen_timeouts.yml") as f: + yml = yaml.safe_load(f) + if args.variant_name in yml["overrides"]: + for task in yml["overrides"][args.variant_name]: + if re.search(task["task"], args.task_name): + override_timeout = task["exec_timeout"] * 60 + break + +with open("override_task_timeout.yml", "w") as f: + if override_timeout: + print( + f"Overriding timeout for {args.variant_name}:{args.task_name} of {override_timeout} seconds." + ) + f.write(f"override_task_timeout: {override_timeout}") + else: + print( + f"Using default timeout for {args.variant_name}:{args.task_name} of {override_timeout} seconds." + ) + f.write(f"override_task_timeout: {default_timeout}")