mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-09-23 05:13:35 +08:00
[webdav] status code 500 if internal error from filer (#5865)
This commit is contained in:

committed by
GitHub

parent
8a1052cc5e
commit
3e6ca6e706
@@ -99,6 +99,7 @@ type FileInfo struct {
|
|||||||
modifiedTime time.Time
|
modifiedTime time.Time
|
||||||
etag string
|
etag string
|
||||||
isDirectory bool
|
isDirectory bool
|
||||||
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fi *FileInfo) Name() string { return fi.name }
|
func (fi *FileInfo) Name() string { return fi.name }
|
||||||
@@ -109,6 +110,9 @@ func (fi *FileInfo) IsDir() bool { return fi.isDirectory }
|
|||||||
func (fi *FileInfo) Sys() interface{} { return nil }
|
func (fi *FileInfo) Sys() interface{} { return nil }
|
||||||
|
|
||||||
func (fi *FileInfo) ETag(ctx context.Context) (string, error) {
|
func (fi *FileInfo) ETag(ctx context.Context) (string, error) {
|
||||||
|
if fi.err != nil {
|
||||||
|
return "", fi.err
|
||||||
|
}
|
||||||
return fi.etag, nil
|
return fi.etag, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +273,10 @@ func (fs *WebDavFileSystem) OpenFile(ctx context.Context, fullFilePath string, f
|
|||||||
|
|
||||||
fi, err := fs.stat(ctx, fullFilePath)
|
fi, err := fs.stat(ctx, fullFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, os.ErrNotExist
|
if err == os.ErrNotExist {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &WebDavFile{fs: fs}, nil
|
||||||
}
|
}
|
||||||
if !strings.HasSuffix(fullFilePath, "/") && fi.IsDir() {
|
if !strings.HasSuffix(fullFilePath, "/") && fi.IsDir() {
|
||||||
fullFilePath += "/"
|
fullFilePath += "/"
|
||||||
@@ -365,12 +372,16 @@ func (fs *WebDavFileSystem) stat(ctx context.Context, fullFilePath string) (os.F
|
|||||||
|
|
||||||
var fi FileInfo
|
var fi FileInfo
|
||||||
entry, err := filer_pb.GetEntry(fs, fullpath)
|
entry, err := filer_pb.GetEntry(fs, fullpath)
|
||||||
|
if err != nil {
|
||||||
|
if err == filer_pb.ErrNotFound {
|
||||||
|
return nil, os.ErrNotExist
|
||||||
|
}
|
||||||
|
fi.err = err
|
||||||
|
return &fi, nil
|
||||||
|
}
|
||||||
if entry == nil {
|
if entry == nil {
|
||||||
return nil, os.ErrNotExist
|
return nil, os.ErrNotExist
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
fi.size = int64(filer.FileSize(entry))
|
fi.size = int64(filer.FileSize(entry))
|
||||||
fi.name = string(fullpath)
|
fi.name = string(fullpath)
|
||||||
fi.mode = os.FileMode(entry.Attributes.FileMode)
|
fi.mode = os.FileMode(entry.Attributes.FileMode)
|
||||||
@@ -514,7 +525,9 @@ func (f *WebDavFile) Write(buf []byte) (int, error) {
|
|||||||
func (f *WebDavFile) Close() error {
|
func (f *WebDavFile) Close() error {
|
||||||
|
|
||||||
glog.V(2).Infof("WebDavFileSystem.Close %v", f.name)
|
glog.V(2).Infof("WebDavFileSystem.Close %v", f.name)
|
||||||
|
if f.bufWriter == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
err := f.bufWriter.Close()
|
err := f.bufWriter.Close()
|
||||||
|
|
||||||
if f.entry != nil {
|
if f.entry != nil {
|
||||||
|
Reference in New Issue
Block a user