Skip to content

Commit d208702

Browse files
chore: fix ci issues
1 parent a9227fb commit d208702

1 file changed

Lines changed: 22 additions & 12 deletions

File tree

internal/downloads/manager.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -248,13 +248,18 @@ func (m *Manager) Cancel(id int) bool {
248248
defer m.mu.Unlock()
249249

250250
for _, item := range m.items {
251-
if item.ID == id && (item.Status == StatusQueued || item.Status == StatusPreparing || item.Status == StatusDownloading) {
252-
if item.cancel != nil {
253-
item.cancel()
251+
if item.ID == id {
252+
item.mu.Lock()
253+
canCancel := item.Status == StatusQueued || item.Status == StatusPreparing || item.Status == StatusDownloading
254+
if canCancel {
255+
if item.cancel != nil {
256+
item.cancel()
257+
}
258+
item.Status = StatusCancelled
259+
m.persistStatus(item.ID, item.Status)
254260
}
255-
item.Status = StatusCancelled
256-
m.persistStatus(item.ID, item.Status)
257-
return true
261+
item.mu.Unlock()
262+
return canCancel
258263
}
259264
}
260265
return false
@@ -264,9 +269,14 @@ func (m *Manager) Retry(id int) bool {
264269
m.mu.Lock()
265270
var item *Item
266271
for _, it := range m.items {
267-
if it.ID == id && it.Status == StatusFailed {
268-
item = it
269-
break
272+
if it.ID == id {
273+
it.mu.Lock()
274+
if it.Status == StatusFailed {
275+
item = it
276+
it.mu.Unlock()
277+
break
278+
}
279+
it.mu.Unlock()
270280
}
271281
}
272282
m.mu.Unlock()
@@ -342,9 +352,9 @@ func (m *Manager) worker() {
342352
}
343353

344354
func (m *Manager) process(item *Item) {
345-
m.mu.Lock()
355+
item.mu.Lock()
346356
if item.Status != StatusQueued {
347-
m.mu.Unlock()
357+
item.mu.Unlock()
348358
return
349359
}
350360
item.Status = StatusPreparing
@@ -353,7 +363,7 @@ func (m *Manager) process(item *Item) {
353363
item.cancel = cancel
354364
now := time.Now()
355365
item.StartedAt = &now
356-
m.mu.Unlock()
366+
item.mu.Unlock()
357367

358368
item.mu.Lock()
359369
item.Status = StatusDownloading

0 commit comments

Comments
 (0)