Skip to content

Commit 21ebed3

Browse files
lcwangchaoYangKeao
authored andcommitted
ttl: fix data race in ttlDeleteWorker (#39635)
close #39633
1 parent 03b6d04 commit 21ebed3

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

ttl/ttlworker/del.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ func (w *ttlDeleteWorker) loop() error {
257257
timer := time.NewTimer(w.retryBuffer.retryInterval)
258258
defer timer.Stop()
259259

260-
for w.status == workerStatusRunning {
260+
for w.Status() == workerStatusRunning {
261261
select {
262262
case <-ctx.Done():
263263
return nil

ttl/ttlworker/scan.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -212,21 +212,24 @@ func (w *ttlScanWorker) Idle() bool {
212212

213213
func (w *ttlScanWorker) Schedule(task *ttlScanTask) error {
214214
w.Lock()
215-
defer w.Unlock()
216215
if w.status != workerStatusRunning {
216+
w.Unlock()
217217
return errors.New("worker is not running")
218218
}
219219

220220
if w.curTaskResult != nil {
221+
w.Unlock()
221222
return errors.New("the result of previous task has not been polled")
222223
}
223224

224225
if w.curTask != nil {
226+
w.Unlock()
225227
return errors.New("a task is running")
226228
}
227229

228230
w.curTask = task
229231
w.curTaskResult = nil
232+
w.Unlock()
230233
w.baseWorker.ch <- task
231234
return nil
232235
}
@@ -250,7 +253,7 @@ func (w *ttlScanWorker) PollTaskResult() (*ttlScanTaskExecResult, bool) {
250253

251254
func (w *ttlScanWorker) loop() error {
252255
ctx := w.baseWorker.ctx
253-
for w.status == workerStatusRunning {
256+
for w.Status() == workerStatusRunning {
254257
select {
255258
case <-ctx.Done():
256259
return nil

0 commit comments

Comments
 (0)