Skip to content

Commit 3d20e81

Browse files
authored
fix: add IsCreated flag to reliably track task creation state (#1314)
1 parent 09f7c88 commit 3d20e81

2 files changed

Lines changed: 6 additions & 5 deletions

File tree

pkg/download/downloader.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,7 +1221,7 @@ func (d *Downloader) statusMut(task *Task, fn func() (bool, error)) (bool, error
12211221
}
12221222

12231223
func (d *Downloader) doStart(task *Task) (err error) {
1224-
var isCreate bool
1224+
var needCreate bool
12251225
isReturn, err := d.statusMut(task, func() (isReturn bool, err error) {
12261226
if task.Status == base.DownloadStatusRunning || task.Status == base.DownloadStatusDone {
12271227
isReturn = true
@@ -1233,7 +1233,7 @@ func (d *Downloader) doStart(task *Task) (err error) {
12331233
d.Logger.Error().Stack().Err(err).Msgf("restore fetcher failed, task id: %s", task.ID)
12341234
return
12351235
}
1236-
isCreate = task.Status == base.DownloadStatusReady
1236+
needCreate = !task.IsCreated
12371237
task.updateStatus(base.DownloadStatusRunning)
12381238

12391239
return
@@ -1259,7 +1259,7 @@ func (d *Downloader) doStart(task *Task) (err error) {
12591259
task.Meta.Res = task.fetcher.Meta().Res
12601260
}
12611261

1262-
if isCreate {
1262+
if needCreate {
12631263
if task.fetcherManager.AutoRename() {
12641264
d.checkDuplicateLock.Lock()
12651265
defer d.checkDuplicateLock.Unlock()
@@ -1283,10 +1283,9 @@ func (d *Downloader) doStart(task *Task) (err error) {
12831283
task.Meta.Opts.Name = newName
12841284
}
12851285
}
1286-
1286+
task.IsCreated = true
12871287
task.Meta.Res.CalcSize(task.Meta.Opts.SelectFiles)
12881288
}
1289-
12901289
task.Progress.Speed = 0
12911290
task.timer.Start()
12921291
if err := task.fetcher.Start(); err != nil {

pkg/download/model.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type Task struct {
2727
Status base.Status `json:"status"`
2828
Uploading bool `json:"uploading"`
2929
Progress *Progress `json:"progress"`
30+
IsCreated bool `json:"isCreated"`
3031
CreatedAt time.Time `json:"createdAt"`
3132
UpdatedAt time.Time `json:"updatedAt"`
3233

@@ -49,6 +50,7 @@ func NewTask() *Task {
4950
Status: base.DownloadStatusReady,
5051
CreatedAt: time.Now(),
5152
UpdatedAt: time.Now(),
53+
IsCreated: false,
5254
}
5355
}
5456

0 commit comments

Comments
 (0)