Skip to content

Commit ea09ce4

Browse files
authored
fix(fs): improve error handling in op.Get (#1323)
1 parent d465da4 commit ea09ce4

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

drivers/alias/driver.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ func (d *Alias) MakeDir(ctx context.Context, parentDir model.Obj, dirName string
250250
}
251251
return err
252252
}
253-
if errs.IsNotImplement(err) {
253+
if errs.IsNotImplementError(err) {
254254
return errors.New("same-name dirs cannot make sub-dir")
255255
}
256256
return err
@@ -261,14 +261,14 @@ func (d *Alias) Move(ctx context.Context, srcObj, dstDir model.Obj) error {
261261
return errs.PermissionDenied
262262
}
263263
srcPath, err := d.getReqPath(ctx, srcObj, false)
264-
if errs.IsNotImplement(err) {
264+
if errs.IsNotImplementError(err) {
265265
return errors.New("same-name files cannot be moved")
266266
}
267267
if err != nil {
268268
return err
269269
}
270270
dstPath, err := d.getReqPath(ctx, dstDir, true)
271-
if errs.IsNotImplement(err) {
271+
if errs.IsNotImplementError(err) {
272272
return errors.New("same-name dirs cannot be moved to")
273273
}
274274
if err != nil {
@@ -296,7 +296,7 @@ func (d *Alias) Rename(ctx context.Context, srcObj model.Obj, newName string) er
296296
}
297297
return err
298298
}
299-
if errs.IsNotImplement(err) {
299+
if errs.IsNotImplementError(err) {
300300
return errors.New("same-name files cannot be Rename")
301301
}
302302
return err
@@ -307,14 +307,14 @@ func (d *Alias) Copy(ctx context.Context, srcObj, dstDir model.Obj) error {
307307
return errs.PermissionDenied
308308
}
309309
srcPath, err := d.getReqPath(ctx, srcObj, false)
310-
if errs.IsNotImplement(err) {
310+
if errs.IsNotImplementError(err) {
311311
return errors.New("same-name files cannot be copied")
312312
}
313313
if err != nil {
314314
return err
315315
}
316316
dstPath, err := d.getReqPath(ctx, dstDir, true)
317-
if errs.IsNotImplement(err) {
317+
if errs.IsNotImplementError(err) {
318318
return errors.New("same-name dirs cannot be copied to")
319319
}
320320
if err != nil {
@@ -348,7 +348,7 @@ func (d *Alias) Remove(ctx context.Context, obj model.Obj) error {
348348
}
349349
return err
350350
}
351-
if errs.IsNotImplement(err) {
351+
if errs.IsNotImplementError(err) {
352352
return errors.New("same-name files cannot be Delete")
353353
}
354354
return err
@@ -392,7 +392,7 @@ func (d *Alias) Put(ctx context.Context, dstDir model.Obj, s model.FileStreamer,
392392
return err
393393
}
394394
}
395-
if errs.IsNotImplement(err) {
395+
if errs.IsNotImplementError(err) {
396396
return errors.New("same-name dirs cannot be Put")
397397
}
398398
return err
@@ -409,7 +409,7 @@ func (d *Alias) PutURL(ctx context.Context, dstDir model.Obj, name, url string)
409409
}
410410
return err
411411
}
412-
if errs.IsNotImplement(err) {
412+
if errs.IsNotImplementError(err) {
413413
return errors.New("same-name files cannot offline download")
414414
}
415415
return err
@@ -482,14 +482,14 @@ func (d *Alias) ArchiveDecompress(ctx context.Context, srcObj, dstDir model.Obj,
482482
return errs.PermissionDenied
483483
}
484484
srcPath, err := d.getReqPath(ctx, srcObj, false)
485-
if errs.IsNotImplement(err) {
485+
if errs.IsNotImplementError(err) {
486486
return errors.New("same-name files cannot be decompressed")
487487
}
488488
if err != nil {
489489
return err
490490
}
491491
dstPath, err := d.getReqPath(ctx, dstDir, true)
492-
if errs.IsNotImplement(err) {
492+
if errs.IsNotImplementError(err) {
493493
return errors.New("same-name dirs cannot be decompressed to")
494494
}
495495
if err != nil {

drivers/strm/driver.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func (d *Strm) Get(ctx context.Context, path string) (model.Obj, error) {
108108
if err != nil {
109109
continue
110110
}
111-
// fs.Get 没报错,说明不是strm生成的路径,需要直接返回
111+
// fs.Get 没报错,说明不是strm驱动映射的路径,需要直接返回
112112
size := int64(0)
113113
if !obj.IsDir() {
114114
size = obj.GetSize()
@@ -123,6 +123,11 @@ func (d *Strm) Get(ctx context.Context, path string) (model.Obj, error) {
123123
HashInfo: obj.GetHash(),
124124
}, nil
125125
}
126+
if strings.HasSuffix(path, ".strm") {
127+
// 上面fs.Get都没找到且后缀为.strm
128+
// 返回errs.NotSupport使得op.Get尝试从op.List中查找
129+
return nil, errs.NotSupport
130+
}
126131
return nil, errs.ObjectNotFound
127132
}
128133

internal/errs/errors.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ func IsNotFoundError(err error) bool {
4242
func IsNotSupportError(err error) bool {
4343
return errors.Is(pkgerr.Cause(err), NotSupport)
4444
}
45-
func IsNotImplement(err error) bool {
45+
func IsNotImplementError(err error) bool {
4646
return errors.Is(pkgerr.Cause(err), NotImplement)
4747
}

internal/op/fs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func Get(ctx context.Context, storage driver.Driver, path string) (model.Obj, er
184184
if err == nil {
185185
return model.WrapObjName(obj), nil
186186
}
187-
if !errs.IsNotImplement(err) {
187+
if !errs.IsNotImplementError(err) && !errs.IsNotSupportError(err) {
188188
return nil, errors.WithMessage(err, "failed to get obj")
189189
}
190190
}

0 commit comments

Comments
 (0)