From 6fc170c645764677e0d6910cc2285f756adff637 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 28 Jan 2026 11:39:22 -0800 Subject: [PATCH] test: add miniClusterMutex to prevent race conditions - Introduce sync.Mutex to protect global state (os.Args, os.Chdir) - Ensure serialized initialization of the mini cluster runner - Fix intermittent race conditions during parallel test execution --- test/s3tables/s3tables_integration_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/s3tables/s3tables_integration_test.go b/test/s3tables/s3tables_integration_test.go index 4789018bd..ac7fcb0d5 100644 --- a/test/s3tables/s3tables_integration_test.go +++ b/test/s3tables/s3tables_integration_test.go @@ -12,6 +12,8 @@ import ( "testing" "time" + "sync" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -21,6 +23,10 @@ import ( flag "github.com/seaweedfs/seaweedfs/weed/util/fla9" ) +var ( + miniClusterMutex sync.Mutex +) + func TestS3TablesIntegration(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") @@ -366,6 +372,10 @@ func startMiniCluster(t *testing.T) (*TestCluster, error) { go func() { defer cluster.wg.Done() + // Protect global state mutation with a mutex + miniClusterMutex.Lock() + defer miniClusterMutex.Unlock() + // Save current directory and args oldDir, _ := os.Getwd() oldArgs := os.Args