Skip to content

Commit 6819a80

Browse files
committed
fix: unexpected signal kill on some linux releases
1 parent df44d44 commit 6819a80

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

speedtest/data_manager.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,10 @@ func (f *funcGroup) Start(cancel context.CancelFunc, mainRequestHandlerIndex int
176176
dbg.Printf("auxN: %d\n", auxN)
177177
wg := sync.WaitGroup{}
178178
f.manager.running = true
179-
ticker := f.manager.rateCapture()
179+
stopCapture := f.manager.rateCapture()
180180
time.AfterFunc(f.manager.captureTime, func() {
181-
ticker.Stop()
181+
stopCapture <- true
182+
close(stopCapture)
182183
f.manager.running = false
183184
cancel()
184185
dbg.Println("FuncGroup: Stop")
@@ -220,15 +221,16 @@ func (f *funcGroup) Start(cancel context.CancelFunc, mainRequestHandlerIndex int
220221
wg.Wait()
221222
}
222223

223-
func (dm *DataManager) rateCapture() *time.Ticker {
224+
func (dm *DataManager) rateCapture() chan bool {
224225
ticker := time.NewTicker(dm.rateCaptureFrequency)
225226
oldTotalDownload := dm.totalDownload
226227
oldTotalUpload := dm.totalUpload
227-
go func() {
228-
loop:
228+
stopCapture := make(chan bool)
229+
go func(t *time.Ticker) {
230+
defer t.Stop()
229231
for {
230232
select {
231-
case <-ticker.C:
233+
case <-t.C:
232234
newTotalDownload := dm.totalDownload
233235
newTotalUpload := dm.totalUpload
234236
deltaDownload := newTotalDownload - oldTotalDownload
@@ -241,14 +243,14 @@ func (dm *DataManager) rateCapture() *time.Ticker {
241243
if deltaUpload != 0 {
242244
dm.UploadRateSequence = append(dm.UploadRateSequence, deltaUpload)
243245
}
244-
default:
245-
if !dm.running {
246-
break loop
246+
case stop := <-stopCapture:
247+
if stop {
248+
return
247249
}
248250
}
249251
}
250-
}()
251-
return ticker
252+
}(ticker)
253+
return stopCapture
252254
}
253255

254256
func (dm *DataManager) NewChunk() Chunk {

0 commit comments

Comments
 (0)