Skip to content

Commit 4403f2d

Browse files
committed
Increase file descriptor limit for TiDB v8.x variants
- TiDB v8.x (8.1.2, 8.5.3) require higher file descriptor limit (at least 123880) - Set ulimit to 250000 for v8.x versions, 200000 for older versions - Add version detection to apply appropriate limits
1 parent 71e2423 commit 4403f2d

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

mysql/testcontainers_helper.go

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,14 @@ func startTiDBCluster(ctx context.Context, t *testing.T, version string) *TiDBTe
398398
}
399399

400400
// Start TiKV (storage layer) - connects to PD
401-
// TiKV requires increased file descriptor limit (at least 82920)
401+
// TiKV requires increased file descriptor limit
402+
// v8.x versions require at least 123880, older versions require at least 82920
403+
tikvFdLimit := 200000 // Default for older versions
404+
if strings.HasPrefix(version, "8.") {
405+
// TiDB v8.x requires higher file descriptor limit
406+
tikvFdLimit = 250000
407+
}
408+
402409
tikvContainer, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
403410
ContainerRequest: testcontainers.ContainerRequest{
404411
Image: fmt.Sprintf("pingcap/tikv:v%s", version),
@@ -412,12 +419,12 @@ func startTiDBCluster(ctx context.Context, t *testing.T, version string) *TiDBTe
412419
"--pd=pd:2379",
413420
},
414421
HostConfigModifier: func(hostConfig *container.HostConfig) {
415-
// Set ulimit for file descriptors to 200000 (TiKV requires at least 123880)
422+
// Set ulimit for file descriptors (v8.x requires at least 123880)
416423
hostConfig.Ulimits = []*container.Ulimit{
417424
{
418425
Name: "nofile",
419-
Soft: 200000,
420-
Hard: 200000,
426+
Soft: tikvFdLimit,
427+
Hard: tikvFdLimit,
421428
},
422429
}
423430
},
@@ -517,7 +524,14 @@ func startSharedTiDBCluster(version string) (*TiDBTestCluster, error) {
517524
}
518525

519526
// Start TiKV (storage layer) - connects to PD
520-
// TiKV requires increased file descriptor limit (at least 82920)
527+
// TiKV requires increased file descriptor limit
528+
// v8.x versions require at least 123880, older versions require at least 82920
529+
tikvFdLimit := 200000 // Default for older versions
530+
if strings.HasPrefix(version, "8.") {
531+
// TiDB v8.x requires higher file descriptor limit
532+
tikvFdLimit = 250000
533+
}
534+
521535
tikvContainer, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
522536
ContainerRequest: testcontainers.ContainerRequest{
523537
Image: fmt.Sprintf("pingcap/tikv:v%s", version),
@@ -531,12 +545,12 @@ func startSharedTiDBCluster(version string) (*TiDBTestCluster, error) {
531545
"--pd=pd:2379",
532546
},
533547
HostConfigModifier: func(hostConfig *container.HostConfig) {
534-
// Set ulimit for file descriptors to 200000 (TiKV requires at least 123880)
548+
// Set ulimit for file descriptors (v8.x requires at least 123880)
535549
hostConfig.Ulimits = []*container.Ulimit{
536550
{
537551
Name: "nofile",
538-
Soft: 200000,
539-
Hard: 200000,
552+
Soft: tikvFdLimit,
553+
Hard: tikvFdLimit,
540554
},
541555
}
542556
},

0 commit comments

Comments
 (0)