0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-24 00:17:37 +01:00

SERVER-86578 Enable TSAN all feature flags variant (#25909)

GitOrigin-RevId: 040a4b10d87a85c2cd17119373aa9636eca36d57
This commit is contained in:
Ryan Berryhill 2024-08-19 15:06:48 -04:00 committed by MongoDB Bot
parent 8165fc8830
commit d3bfe8c0ec
8 changed files with 217 additions and 63 deletions

View File

@ -42,6 +42,18 @@ VARIANT_TASK_FACTOR_OVERRIDES = {
{"task": r"fcv_upgrade_downgrade_sharded_collections_jscore_passthrough.*", "factor": 0.27},
{"task": r"shard.*uninitialized_fcv_jscore_passthrough.*", "factor": 0.125},
],
"enterprise-rhel8-debug-tsan-all-feature-flags": [
# Lower the default resmoke_jobs_factor for TSAN to reduce memory pressure for this suite,
# as otherwise TSAN variants occasionally run out of memory.
# The all feature flags variant sometimes needs more aggressive reductions than the no
# feature flags variant.
{
"task": r"fcv_upgrade_downgrade_sharded_collections_jscore_passthrough.*",
"factor": 0.125,
},
{"task": r"fcv_upgrade_downgrade_replica_sets_jscore_passthrough.*", "factor": 0.27},
{"task": r"shard.*uninitialized_fcv_jscore_passthrough.*", "factor": 0.125},
],
"rhel8-debug-aubsan-classic-engine": [
{"task": r"shard.*uninitialized_fcv_jscore_passthrough.*", "factor": 0.25}
],

View File

@ -416,7 +416,7 @@ tasks:
commands:
- func: "generate resmoke tasks"
vars:
use_large_distro: "true"
use_xlarge_distro: "true"
resmoke_jobs_max: 1
- <<: *gen_task_template

View File

@ -170,6 +170,72 @@ variables:
multiversion_edition: enterprise
gcov_tool: /opt/mongodbtoolchain/v4/bin/gcov
# THIS HAS COPIES IN
# - etc/evergreen_yml_components/variants/sanitizer/test_dev.yml
# - etc/evergreen_yml_components/variants/sanitizer/test_dev_master_branch_only.yml
# ANY MODIFICATIONS HERE SHOULD ALSO BE MADE IN THOSE FILES
- &enterprise-rhel8-debug-tsan-compile-dependency
depends_on:
- name: archive_dist_test_debug
variant: &enterprise-rhel8-debug-tsan-compile enterprise-rhel8-debug-tsan-compile
- name: archive_jstestshell
variant: *enterprise-rhel8-debug-tsan-compile
- name: version_gen
variant: generate-tasks-for-version
# This is added because of EVG-18211.
# Without this we are adding extra dependencies on evergreen and it is causing strain
omit_generated_tasks: true
# THIS HAS COPIES IN
# - etc/evergreen_yml_components/variants/sanitizer/test_dev.yml
# - etc/evergreen_yml_components/variants/sanitizer/test_dev_master_branch_only.yml
# ANY MODIFICATIONS HERE SHOULD ALSO BE MADE IN THOSE FILES
- &enterprise-rhel8-debug-tsan-expansions-template
additional_package_targets: >-
archive-mongocryptd
archive-mongocryptd-debug
lang_environment: LANG=C
toolchain_version: stable
compile_variant: *enterprise-rhel8-debug-tsan-compile
# If you add anything to san_options, make sure the appropriate
# changes are also made to SConstruct.
#
# TODO SERVER-49121: die_after_fork=0 is a temporary setting to
# allow tests to continue while we figure out why we're running
# afoul of it.
#
# TODO SERVER-65936: report_thread_leaks=0 suppresses reporting
# thread leaks, which we have because we don't do a clean shutdown
# of the ServiceContext.
#
# Run TSAN with diagnostic latches off, as our diagnostics reduce
# TSAN's visibility - see SERVER-88159.
#
san_options: TSAN_OPTIONS="abort_on_error=1:disable_coredump=0:handle_abort=1:halt_on_error=1:report_thread_leaks=0:die_after_fork=0:history_size=4:suppressions=etc/tsan.suppressions:external_symbolizer_path=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer"
build_mongot: true
download_mongot_release: true
compile_flags: >-
--variables-files=etc/scons/mongodbtoolchain_${toolchain_version}_clang.vars
--dbg=on
--opt=on
--allocator=system
--sanitize=thread
--ssl
--use-libunwind=off
--link-model=dynamic
-j$(grep -c ^processor /proc/cpuinfo)
--use-diagnostic-latches=off
# Avoid starting too many mongod's under TSAN build.
resmoke_jobs_factor: 0.3
scons_cache_scope: shared
separate_debug: off
large_distro_name: &enterprise-rhel8-debug-tsan-large-distro-name rhel8.8-xlarge
xlarge_distro_name: rhel8.8-xxlarge
core_analyzer_distro_name: rhel8.8-xxlarge
multiversion_platform: rhel80
multiversion_platform_50_or_later: rhel8
multiversion_edition: enterprise
buildvariants:
- <<: *generic_linux_compile_params
name: &linux-x86-dynamic-debug-compile-required linux-x86-dynamic-debug-compile-required # TODO: replace with Sanitizer.
@ -415,62 +481,15 @@ buildvariants:
tasks:
- name: compile_archive_and_run_libfuzzertests_TG
- &enterprise-rhel8-debug-tsan-template
name: &enterprise-rhel8-debug-tsan-compile enterprise-rhel8-debug-tsan-compile
- name: &enterprise-rhel8-debug-tsan-compile enterprise-rhel8-debug-tsan-compile
display_name: "* TSAN Enterprise RHEL 8 DEBUG Compile"
tags: ["suggested"]
cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
run_on:
- rhel8.8-large
stepback: false
expansions: &enterprise-rhel8-debug-tsan-expansions-template
additional_package_targets: >-
archive-mongocryptd
archive-mongocryptd-debug
lang_environment: LANG=C
toolchain_version: stable
compile_variant: *enterprise-rhel8-debug-tsan-compile
# If you add anything to san_options, make sure the appropriate
# changes are also made to SConstruct.
#
# TODO SERVER-49121: die_after_fork=0 is a temporary setting to
# allow tests to continue while we figure out why we're running
# afoul of it.
#
# TODO SERVER-65936: report_thread_leaks=0 suppresses reporting
# thread leaks, which we have because we don't do a clean shutdown
# of the ServiceContext.
#
# Run TSAN with diagnostic latches off, as our diagnostics reduce
# TSAN's visibility - see SERVER-88159.
#
san_options: TSAN_OPTIONS="abort_on_error=1:disable_coredump=0:handle_abort=1:halt_on_error=1:report_thread_leaks=0:die_after_fork=0:history_size=4:suppressions=etc/tsan.suppressions:external_symbolizer_path=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer"
build_mongot: true
download_mongot_release: true
compile_flags: >-
--variables-files=etc/scons/mongodbtoolchain_${toolchain_version}_clang.vars
--dbg=on
--opt=on
--allocator=system
--sanitize=thread
--ssl
--use-libunwind=off
--link-model=dynamic
-j$(grep -c ^processor /proc/cpuinfo)
--use-diagnostic-latches=off
# Avoid starting too many mongod's under TSAN build.
resmoke_jobs_factor: 0.3
scons_cache_scope: shared
separate_debug: off
large_distro_name: &enterprise-rhel8-debug-tsan-large-distro-name rhel8.8-xlarge
xlarge_distro_name: rhel8.8-xxlarge
core_analyzer_distro_name: rhel8.8-xxlarge
multiversion_platform: rhel80
multiversion_platform_50_or_later: rhel8
multiversion_edition: enterprise
test_flags: >-
--mongodSetParameters="{internalQueryEnableAggressiveSpillsInGroup: true, receiveChunkWaitForRangeDeleterTimeoutMS: 180000}"
--excludeWithAnyTags=tsan_incompatible,requires_latch_analyzer
expansions:
<<: *enterprise-rhel8-debug-tsan-expansions-template
tasks:
- name: search_end_to_end_sharded_cluster
- name: search_end_to_end_single_node
@ -488,21 +507,19 @@ buildvariants:
distros:
- rhel8.8-xlarge
- <<: *enterprise-rhel8-debug-tsan-template
- <<: *enterprise-rhel8-debug-tsan-compile-dependency
name: &enterprise-rhel8-debug-tsan enterprise-rhel8-debug-tsan
display_name: "* TSAN Enterprise RHEL 8 DEBUG"
tags: ["suggested"]
cron: "0 4 * * *" # From the ${project_nightly_cron} parameter.
depends_on:
- name: archive_dist_test_debug
variant: *enterprise-rhel8-debug-tsan-compile
- name: archive_jstestshell
variant: *enterprise-rhel8-debug-tsan-compile
- name: version_gen
variant: generate-tasks-for-version
# This is added because of EVG-18211.
# Without this we are adding extra dependencies on evergreen and it is causing strain
omit_generated_tasks: true
cron: "0 4 1-31/2 * *" # For cost reasons, we run this variant every other day.
run_on:
- rhel8.8-large
stepback: false
expansions:
<<: *enterprise-rhel8-debug-tsan-expansions-template
test_flags: >-
--mongodSetParameters="{internalQueryEnableAggressiveSpillsInGroup: true, receiveChunkWaitForRangeDeleterTimeoutMS: 180000}"
--excludeWithAnyTags=tsan_incompatible,requires_latch_analyzer
tasks:
- name: .development_critical !.requires_large_host !.requires_compile_variant !.requires_large_host_tsan !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.requires_all_feature_flags
- name: .development_critical .requires_large_host !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.requires_all_feature_flags

View File

@ -127,6 +127,72 @@ variables:
multiversion_edition: enterprise
gcov_tool: /opt/mongodbtoolchain/v4/bin/gcov
# THIS HAS COPIES IN
# - etc/evergreen_yml_components/variants/sanitizer/test_dev.yml
# - etc/evergreen_yml_components/variants/sanitizer/test_dev_master_branch_only.yml
# ANY MODIFICATIONS HERE SHOULD ALSO BE MADE IN THOSE FILES
- &enterprise-rhel8-debug-tsan-compile-dependency
depends_on:
- name: archive_dist_test_debug
variant: &enterprise-rhel8-debug-tsan-compile enterprise-rhel8-debug-tsan-compile
- name: archive_jstestshell
variant: *enterprise-rhel8-debug-tsan-compile
- name: version_gen
variant: generate-tasks-for-version
# This is added because of EVG-18211.
# Without this we are adding extra dependencies on evergreen and it is causing strain
omit_generated_tasks: true
# THIS HAS COPIES IN
# - etc/evergreen_yml_components/variants/sanitizer/test_dev.yml
# - etc/evergreen_yml_components/variants/sanitizer/test_dev_master_branch_only.yml
# ANY MODIFICATIONS HERE SHOULD ALSO BE MADE IN THOSE FILES
- &enterprise-rhel8-debug-tsan-expansions-template
additional_package_targets: >-
archive-mongocryptd
archive-mongocryptd-debug
lang_environment: LANG=C
toolchain_version: stable
compile_variant: *enterprise-rhel8-debug-tsan-compile
# If you add anything to san_options, make sure the appropriate
# changes are also made to SConstruct.
#
# TODO SERVER-49121: die_after_fork=0 is a temporary setting to
# allow tests to continue while we figure out why we're running
# afoul of it.
#
# TODO SERVER-65936: report_thread_leaks=0 suppresses reporting
# thread leaks, which we have because we don't do a clean shutdown
# of the ServiceContext.
#
# Run TSAN with diagnostic latches off, as our diagnostics reduce
# TSAN's visibility - see SERVER-88159.
#
san_options: TSAN_OPTIONS="abort_on_error=1:disable_coredump=0:handle_abort=1:halt_on_error=1:report_thread_leaks=0:die_after_fork=0:history_size=4:suppressions=etc/tsan.suppressions:external_symbolizer_path=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer"
build_mongot: true
download_mongot_release: true
compile_flags: >-
--variables-files=etc/scons/mongodbtoolchain_${toolchain_version}_clang.vars
--dbg=on
--opt=on
--allocator=system
--sanitize=thread
--ssl
--use-libunwind=off
--link-model=dynamic
-j$(grep -c ^processor /proc/cpuinfo)
--use-diagnostic-latches=off
# Avoid starting too many mongod's under TSAN build.
resmoke_jobs_factor: 0.3
scons_cache_scope: shared
separate_debug: off
large_distro_name: &enterprise-rhel8-debug-tsan-large-distro-name rhel8.8-xlarge
xlarge_distro_name: rhel8.8-xxlarge
core_analyzer_distro_name: rhel8.8-xxlarge
multiversion_platform: rhel80
multiversion_platform_50_or_later: rhel8
multiversion_edition: enterprise
buildvariants:
###########################################
# Redhat buildvariants #
@ -506,6 +572,50 @@ buildvariants:
- rhel8.8-xlarge
- name: .benchmarks
- <<: *enterprise-rhel8-debug-tsan-compile-dependency
name: &enterprise-rhel8-debug-tsan-all-feature-flags enterprise-rhel8-debug-tsan-all-feature-flags
display_name: "* TSAN Enterprise RHEL 8 DEBUG (all feature flags)"
tags: ["suggested"]
cron: "0 4 1-31/2 * *" # For cost reasons, we run this variant every other day.
run_on:
- rhel8.8-large
stepback: false
expansions:
<<: *enterprise-rhel8-debug-tsan-expansions-template
test_flags: >-
--mongodSetParameters="{internalQueryEnableAggressiveSpillsInGroup: true, receiveChunkWaitForRangeDeleterTimeoutMS: 180000}"
--excludeWithAnyTags=tsan_incompatible,requires_latch_analyzer
--runAllFeatureFlagTests
tasks:
- name: .development_critical !.requires_large_host !.requires_compile_variant !.requires_large_host_tsan !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
- name: .development_critical .requires_large_host !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .development_critical .requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .release_critical !.requires_large_host !.requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
- name: .release_critical .requires_large_host !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .release_critical .requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .default !.requires_large_host !.requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
- name: .default .requires_large_host !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .default .requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .non_deterministic !.requires_large_host !.requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
- name: .non_deterministic .requires_large_host !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: .non_deterministic .requires_large_host_tsan !.requires_compile_variant !.incompatible_development_variant !.incompatible_tsan !.incompatible_system_allocator !.incompatible_all_feature_flags
distros:
- *enterprise-rhel8-debug-tsan-large-distro-name
- name: &enterprise-rhel8-unoptimized-64-bit enterprise-rhel8-unoptimized-64-bit
display_name: "~ Enterprise RHEL 8 DEBUG (Unoptimized)"
tags: ["bazel_check"]

View File

@ -79,3 +79,10 @@ race:mongo::AuthorizationManager::get
# TODO SERVER-91877 inversion b/w SSL manager and some crypto mutex
deadlock:mongo::(anonymous namespace)::SSLManagerOpenSSL::SSLManagerOpenSSL
# TODO SERVER-93363
race:S2Loop::FindVertex
# TODO SERVER-93364
race:mongo::Client::setService
race:mongo::Client::getService

View File

@ -1,5 +1,9 @@
/**
* Tests to validate limits for $regexFind, $regexFindAll and $regexMatch aggregation expressions.
* @tags: [
* # TODO SERVER-93378 investigate why this test is significantly slower with TSAN.
* tsan_incompatible,
* ]
*/
import "jstests/libs/sbe_assert_error_override.js";

View File

@ -7,6 +7,8 @@
* requires_non_retryable_writes,
* does_not_support_transactions,
* featureFlagTimeseriesUpdatesSupport,
* # TODO SERVER-93382 investigate excessive resource usage under TSAN.
* tsan_incompatible,
* ]
*/
import {extendWorkload} from "jstests/concurrency/fsm_libs/extend_workload.js";

View File

@ -7,6 +7,8 @@
* requires_non_retryable_writes,
* does_not_support_transactions,
* requires_fcv_51,
* # TODO SERVER-93382 investigate excessive resource usage under TSAN.
* tsan_incompatible,
* ]
*/
import {extendWorkload} from "jstests/concurrency/fsm_libs/extend_workload.js";