Skip to content

Commit e1bba70

Browse files
jenfonroj2rong4cn
andauthored
fix(task): tasks keep being cancelled (#1745)
* fix_cancel * update(go.mod): update tache version * tache v0.2.2 --------- Co-authored-by: j2rong4cn <j2rong@qq.com>
1 parent 94c7d68 commit e1bba70

File tree

7 files changed

+21
-27
lines changed

7 files changed

+21
-27
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/KirCute/zip v1.0.1
1010
github.com/OpenListTeam/go-cache v0.1.0
1111
github.com/OpenListTeam/sftpd-openlist v1.0.1
12-
github.com/OpenListTeam/tache v0.2.1
12+
github.com/OpenListTeam/tache v0.2.2
1313
github.com/OpenListTeam/times v0.1.0
1414
github.com/OpenListTeam/wopan-sdk-go v0.1.5
1515
github.com/ProtonMail/go-crypto v1.3.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ github.com/OpenListTeam/gsync v0.1.0 h1:ywzGybOvA3lW8K1BUjKZ2IUlT2FSlzPO4DOazfYX
5555
github.com/OpenListTeam/gsync v0.1.0/go.mod h1:h/Rvv9aX/6CdW/7B8di3xK3xNV8dUg45Fehrd/ksZ9s=
5656
github.com/OpenListTeam/sftpd-openlist v1.0.1 h1:j4S3iPFOpnXCUKRPS7uCT4mF2VCl34GyqvH6lqwnkUU=
5757
github.com/OpenListTeam/sftpd-openlist v1.0.1/go.mod h1:uO/wKnbvbdq3rBLmClMTZXuCnw7XW4wlAq4dZe91a40=
58-
github.com/OpenListTeam/tache v0.2.1 h1:Uy/xAr05clHuMrr9+5fXAhv0Z5PGJivp4P5DnRez6cw=
59-
github.com/OpenListTeam/tache v0.2.1/go.mod h1:qmnZ/VpY2DUlmjg3UoDeNFy/LRqrw0biN3hYEEGc/+A=
58+
github.com/OpenListTeam/tache v0.2.2 h1:CWFn6sr1AIYaEjC8ONdKs+LrxHyuErheenAjEqRhh4k=
59+
github.com/OpenListTeam/tache v0.2.2/go.mod h1:qmnZ/VpY2DUlmjg3UoDeNFy/LRqrw0biN3hYEEGc/+A=
6060
github.com/OpenListTeam/times v0.1.0 h1:qknxw+qj5CYKgXAwydA102UEpPcpU8TYNGRmwRyPYpg=
6161
github.com/OpenListTeam/times v0.1.0/go.mod h1:Jx7qen5NCYzKk2w14YuvU48YYMcPa1P9a+EJePC15Pc=
6262
github.com/OpenListTeam/wopan-sdk-go v0.1.5 h1:iKKcVzIqBgtGDbn0QbdWrCazSGxXFmYFyrnFBG+U8dI=

internal/fs/archive.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ func (t *ArchiveDownloadTask) GetName() string {
3838
}
3939

4040
func (t *ArchiveDownloadTask) Run() error {
41-
if err := t.ReinitCtx(); err != nil {
42-
return err
43-
}
4441
if t.SrcStorage == nil {
4542
if srcStorage, _, err := op.GetStorageAndActualPath(t.SrcStorageMp); err == nil {
4643
t.SrcStorage = srcStorage
@@ -155,9 +152,6 @@ func (t *ArchiveContentUploadTask) GetStatus() string {
155152
}
156153

157154
func (t *ArchiveContentUploadTask) Run() error {
158-
if err := t.ReinitCtx(); err != nil {
159-
return err
160-
}
161155
t.ClearEndTime()
162156
t.SetStartTime(time.Now())
163157
defer func() { t.SetEndTime(time.Now()) }()

internal/fs/copy_move.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/OpenListTeam/OpenList/v4/internal/stream"
1414
"github.com/OpenListTeam/OpenList/v4/internal/task"
1515
"github.com/OpenListTeam/OpenList/v4/internal/task_group"
16-
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
1716
"github.com/OpenListTeam/OpenList/v4/server/common"
1817
"github.com/OpenListTeam/tache"
1918
"github.com/pkg/errors"
@@ -48,9 +47,6 @@ func (t *FileTransferTask) GetName() string {
4847
}
4948

5049
func (t *FileTransferTask) Run() error {
51-
if err := t.ReinitCtx(); err != nil {
52-
return err
53-
}
5450
if t.SrcStorage == nil {
5551
if srcStorage, _, err := op.GetStorageAndActualPath(t.SrcStorageMp); err == nil {
5652
t.SrcStorage = srcStorage
@@ -88,7 +84,7 @@ func (t *FileTransferTask) OnFailed() {
8884
}
8985

9086
func (t *FileTransferTask) SetRetry(retry int, maxRetry int) {
91-
t.TaskExtension.SetRetry(retry, maxRetry)
87+
t.TaskData.SetRetry(retry, maxRetry)
9288
if retry == 0 &&
9389
(len(t.groupID) == 0 || // 重启恢复
9490
(t.GetErr() == nil && t.GetState() != tache.StatePending)) { // 手动重试
@@ -198,17 +194,23 @@ func (t *FileTransferTask) RunWithNextTaskCallback(f func(nextTask *FileTransfer
198194

199195
existedObjs := make(map[string]bool)
200196
if t.TaskType == merge {
201-
dstObjs, _ := op.List(t.Ctx(), t.DstStorage, dstActualPath, model.ListArgs{})
197+
dstObjs, err := op.List(t.Ctx(), t.DstStorage, dstActualPath, model.ListArgs{})
198+
if err != nil {
199+
return errors.WithMessagef(err, "failed list dst [%s] objs", dstActualPath)
200+
}
202201
for _, obj := range dstObjs {
202+
if err := t.Ctx().Err(); err != nil {
203+
return err
204+
}
203205
if !obj.IsDir() {
204206
existedObjs[obj.GetName()] = true
205207
}
206208
}
207209
}
208210

209211
for _, obj := range objs {
210-
if utils.IsCanceled(t.Ctx()) {
211-
return nil
212+
if err := t.Ctx().Err(); err != nil {
213+
return err
212214
}
213215

214216
if t.TaskType == merge && !obj.IsDir() && existedObjs[obj.GetName()] {
@@ -239,6 +241,7 @@ func (t *FileTransferTask) RunWithNextTaskCallback(f func(nextTask *FileTransfer
239241
return nil
240242
}
241243

244+
t.Status = "getting src object link"
242245
link, _, err := op.Link(t.Ctx(), t.SrcStorage, t.SrcActualPath, model.LinkArgs{})
243246
if err != nil {
244247
return errors.WithMessagef(err, "failed get [%s] link", t.SrcActualPath)

internal/offline_download/tool/download.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ type DownloadTask struct {
3232
}
3333

3434
func (t *DownloadTask) Run() error {
35-
if err := t.ReinitCtx(); err != nil {
36-
return err
37-
}
3835
t.ClearEndTime()
3936
t.SetStartTime(time.Now())
4037
defer func() { t.SetEndTime(time.Now()) }()

internal/offline_download/tool/transfer.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ type TransferTask struct {
3131
}
3232

3333
func (t *TransferTask) Run() error {
34-
if err := t.ReinitCtx(); err != nil {
35-
return err
36-
}
3734
if t.SrcStorage == nil && t.SrcStorageMp != "" {
3835
if srcStorage, _, err := op.GetStorageAndActualPath(t.SrcStorageMp); err == nil {
3936
t.SrcStorage = srcStorage
@@ -118,7 +115,7 @@ func (t *TransferTask) SetRetry(retry int, maxRetry int) {
118115
t.groupID = stdpath.Join(t.DstStorageMp, t.DstActualPath)
119116
task_group.TransferCoordinator.AddTask(t.groupID, nil)
120117
}
121-
t.TaskExtension.SetRetry(retry, maxRetry)
118+
t.TaskData.SetRetry(retry, maxRetry)
122119
}
123120

124121
var (

internal/task/base.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,21 @@ func (t *TaskExtension) GetTotalBytes() int64 {
6565
return t.TotalBytes
6666
}
6767

68-
func (t *TaskExtension) ReinitCtx() error {
68+
func (t *TaskExtension) SetRetry(retry int, maxRetry int) {
69+
t.Base.SetRetry(retry, maxRetry)
70+
if retry > 0 || t.Ctx() == nil {
71+
return
72+
}
6973
select {
7074
case <-t.Ctx().Done():
7175
if !conf.Conf.Tasks.AllowRetryCanceled {
72-
return t.Ctx().Err()
76+
return
7377
}
7478
ctx, cancel := context.WithCancel(context.Background())
7579
t.SetCtx(ctx)
7680
t.SetCancelFunc(cancel)
7781
default:
7882
}
79-
return nil
8083
}
8184

8285
type TaskExtensionInfo interface {

0 commit comments

Comments
 (0)