Skip to content

Commit fac91f1

Browse files
YangKeaozeminzhou
authored andcommitted
ttl, test: scale TTL workers during the fault tests (pingcap#58750)
close pingcap#58745
1 parent a8ce895 commit fac91f1

File tree

1 file changed

+36
-3
lines changed

1 file changed

+36
-3
lines changed

pkg/ttl/ttlworker/job_manager_integration_test.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,8 +1727,6 @@ func TestJobManagerWithFault(t *testing.T) {
17271727
}
17281728

17291729
stopTestCh := make(chan struct{})
1730-
wg := &sync.WaitGroup{}
1731-
wg.Add(1)
17321730

17331731
fault := newFaultWithFilter(func(sql string) bool {
17341732
// skip some local only sql, ref `getSession()` in `session.go`
@@ -1739,6 +1737,10 @@ func TestJobManagerWithFault(t *testing.T) {
17391737

17401738
return true
17411739
}, newFaultWithProbability(faultPercent))
1740+
1741+
wg := &sync.WaitGroup{}
1742+
// start the goroutine to inject fault to managers randomly
1743+
wg.Add(1)
17421744
go func() {
17431745
defer wg.Done()
17441746

@@ -1775,6 +1777,38 @@ func TestJobManagerWithFault(t *testing.T) {
17751777
}
17761778
}()
17771779

1780+
// start the goroutine to randomly scale the worker count
1781+
wg.Add(1)
1782+
go func() {
1783+
defer wg.Done()
1784+
1785+
maxScanWorkerCount := variable.DefTiDBTTLScanWorkerCount * 2
1786+
minScanWorkerCount := variable.DefTiDBTTLScanWorkerCount / 2
1787+
1788+
maxDelWorkerCount := variable.DefTiDBTTLDeleteWorkerCount * 2
1789+
minDelWorkerCount := variable.DefTiDBTTLDeleteWorkerCount / 2
1790+
faultTicker := time.NewTicker(time.Second)
1791+
1792+
tk := testkit.NewTestKit(t, store)
1793+
for {
1794+
select {
1795+
case <-stopTestCh:
1796+
// Recover to the default count
1797+
tk.MustExec("set @@global.tidb_ttl_scan_worker_count = ?", variable.DefTiDBTTLScanWorkerCount)
1798+
tk.MustExec("set @@global.tidb_ttl_delete_worker_count = ?", variable.DefTiDBTTLDeleteWorkerCount)
1799+
1800+
return
1801+
case <-faultTicker.C:
1802+
scanWorkerCount := rand.Int()%(maxScanWorkerCount-minScanWorkerCount) + minScanWorkerCount
1803+
delWorkerCount := rand.Int()%(maxDelWorkerCount-minDelWorkerCount) + minDelWorkerCount
1804+
1805+
logutil.BgLogger().Info("scale worker count", zap.Int("scanWorkerCount", scanWorkerCount), zap.Int("delWorkerCount", delWorkerCount))
1806+
tk.MustExec("set @@global.tidb_ttl_scan_worker_count = ?", scanWorkerCount)
1807+
tk.MustExec("set @@global.tidb_ttl_delete_worker_count = ?", delWorkerCount)
1808+
}
1809+
}
1810+
}()
1811+
17781812
// run the workload goroutine
17791813
testStart := time.Now()
17801814
for time.Since(testStart) < testDuration {
@@ -1825,7 +1859,6 @@ func TestJobManagerWithFault(t *testing.T) {
18251859
}
18261860

18271861
logutil.BgLogger().Info("test finished")
1828-
stopTestCh <- struct{}{}
18291862
close(stopTestCh)
18301863

18311864
wg.Wait()

0 commit comments

Comments
 (0)