From 20547a1c4191260458cc21d711e0647e2b3e5676 Mon Sep 17 00:00:00 2001 From: mkitsdts Date: Fri, 30 Jan 2026 17:19:19 +0800 Subject: [PATCH 1/3] fix(driver/quark):fix error after makedir --- drivers/quark_uc/driver.go | 39 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/drivers/quark_uc/driver.go b/drivers/quark_uc/driver.go index a1371243c..23f4abb95 100644 --- a/drivers/quark_uc/driver.go +++ b/drivers/quark_uc/driver.go @@ -51,26 +51,7 @@ func (d *QuarkOrUC) Drop(ctx context.Context) error { return nil } -func (d *QuarkOrUC) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) { - files, err := d.GetFiles(dir.GetID()) - if err != nil { - return nil, err - } - - return files, nil -} - -func (d *QuarkOrUC) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) { - f := file.(*File) - - if d.UseTransCodingAddress && d.config.Name == "Quark" && f.Category == 1 && f.Size > 0 { - return d.getTranscodingLink(file) - } - - return d.getDownloadLink(file) -} - -func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error { +func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error) { data := base.Json{ "dir_init_lock": false, "dir_path": "", @@ -80,10 +61,22 @@ func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName st _, err := d.request("/file", http.MethodPost, func(req *resty.Request) { req.SetBody(data) }, nil) - if err == nil { - time.Sleep(time.Second) + if err != nil && err.Error() != "file is doloading[同名冲突]" { + return nil, err } - return err + var files []model.Obj + for i := range 5 { + files, err = d.GetFiles(parentDir.GetID()) + if err == nil { + for _, file := range files { + if file.GetName() == dirName { + return file, nil + } + } + } + time.Sleep((10 << i) * time.Millisecond) + } + return nil, err } func (d *QuarkOrUC) Move(ctx context.Context, srcObj, dstDir model.Obj) error { From 8f7d2223be48f224ac476a8ca66d00a17fb0cdc0 Mon Sep 17 00:00:00 2001 From: mkitsdts Date: Fri, 30 Jan 2026 17:20:31 +0800 Subject: [PATCH 2/3] chore(driver/quark):recover file --- drivers/quark_uc/driver.go | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/drivers/quark_uc/driver.go b/drivers/quark_uc/driver.go index 23f4abb95..7f9a47a53 100644 --- a/drivers/quark_uc/driver.go +++ b/drivers/quark_uc/driver.go @@ -51,6 +51,25 @@ func (d *QuarkOrUC) Drop(ctx context.Context) error { return nil } +func (d *QuarkOrUC) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) { + files, err := d.GetFiles(dir.GetID()) + if err != nil { + return nil, err + } + + return files, nil +} + +func (d *QuarkOrUC) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) { + f := file.(*File) + + if d.UseTransCodingAddress && d.config.Name == "Quark" && f.Category == 1 && f.Size > 0 { + return d.getTranscodingLink(file) + } + + return d.getDownloadLink(file) +} + func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error) { data := base.Json{ "dir_init_lock": false, @@ -65,7 +84,13 @@ func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName st return nil, err } var files []model.Obj - for i := range 5 { + maxRetries := 5 + for i := range maxRetries { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + } files, err = d.GetFiles(parentDir.GetID()) if err == nil { for _, file := range files { @@ -74,7 +99,10 @@ func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName st } } } - time.Sleep((10 << i) * time.Millisecond) + if i == maxRetries-1 { + + } + time.Sleep((50 << i) * time.Millisecond) } return nil, err } From 961292aba450b68a7f6469fa6b001a08c142f635 Mon Sep 17 00:00:00 2001 From: mkitsdts Date: Fri, 30 Jan 2026 21:08:21 +0800 Subject: [PATCH 3/3] chore(driver/quark_uc): end unnecessary waiting --- drivers/quark_uc/driver.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/quark_uc/driver.go b/drivers/quark_uc/driver.go index 7f9a47a53..c0610a1d9 100644 --- a/drivers/quark_uc/driver.go +++ b/drivers/quark_uc/driver.go @@ -100,10 +100,11 @@ func (d *QuarkOrUC) MakeDir(ctx context.Context, parentDir model.Obj, dirName st } } if i == maxRetries-1 { - + return nil, err } time.Sleep((50 << i) * time.Millisecond) } + // never been happened return nil, err }