mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 08:18:18 +00:00
test(ecstore): serialize load-sensitive flaky tests via nextest test-group (#4558)
Two ecstore test groups pass in isolation but flake under the full parallel nextest suite, producing CI noise on every in-flight PR (backlog #937): - store::bucket::tests::bucket_delete_* race make_bucket into InsufficientWriteQuorum because they share global disk-registry/lock-client state with other concurrently running tests. - bucket_lifecycle_ops::tests::concurrent_resend_same_part_commits_one_generation exceeds its already-maxed 60s lock-acquire deadline only when the suite saturates disk I/O. serial_test's #[serial] does not serialize these across nextest's per-test process boundary. Add a nextest test-group (max-threads = 1) that matches both groups so they run serialized, removing the load-induced flake. No test or production code changes; long-term global-singleton isolation is tracked separately. Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# nextest configuration for RustFS.
|
||||
#
|
||||
# Serialize two known load-sensitive / global-state-sharing ecstore test groups
|
||||
# so the full parallel nextest suite stops producing spurious failures
|
||||
# (backlog #937). These tests pass in isolation but flake under the loaded
|
||||
# parallel run for two distinct reasons:
|
||||
#
|
||||
# * store::bucket::tests::bucket_delete_* share process/global state (disk
|
||||
# registry, lock client) and race make_bucket into InsufficientWriteQuorum
|
||||
# when run concurrently with other ecstore tests.
|
||||
# * bucket_lifecycle_ops::tests::concurrent_resend_same_part_commits_one_generation
|
||||
# asserts a lock-acquire correctness property whose serialized cross-disk
|
||||
# commits exceed the (already max'd, 60s) acquire deadline only when the
|
||||
# suite saturates disk I/O.
|
||||
#
|
||||
# serial_test's #[serial] attribute does NOT serialize these across runs:
|
||||
# nextest executes each test in its own process, where the in-process
|
||||
# serial_test mutex has no effect. A nextest test-group with max-threads = 1 is
|
||||
# the mechanism that actually serializes across nextest's process boundary.
|
||||
[test-groups]
|
||||
ecstore-serial-flaky = { max-threads = 1 }
|
||||
|
||||
[[profile.default.overrides]]
|
||||
filter = 'package(rustfs-ecstore) & (test(concurrent_resend_same_part_commits_one_generation) | test(/^store::bucket::tests::bucket_delete_(mark_delete_marks|purge_removes|default_s3_delete)/))'
|
||||
test-group = 'ecstore-serial-flaky'
|
||||
Reference in New Issue
Block a user