From 4db21012c1604d535420d4a892c06daecb795c1f Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev Date: Thu, 11 Mar 2021 22:38:59 +0500 Subject: [PATCH 1/2] error if read chunk zero data size --- weed/filer/stream.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/weed/filer/stream.go b/weed/filer/stream.go index 6a87a2b7d..292e41f82 100644 --- a/weed/filer/stream.go +++ b/weed/filer/stream.go @@ -15,7 +15,7 @@ import ( func StreamContent(masterClient wdclient.HasLookupFileIdFunction, w io.Writer, chunks []*filer_pb.FileChunk, offset int64, size int64) error { - // fmt.Printf("start to stream content for chunks: %+v\n", chunks) + glog.V(9).Infof("start to stream content for chunks: %+v\n", chunks) chunkViews := ViewFromChunks(masterClient.GetLookupFileIdFunction(), chunks, offset, size) fileId2Url := make(map[string][]string) @@ -38,7 +38,14 @@ func StreamContent(masterClient wdclient.HasLookupFileIdFunction, w io.Writer, c if err != nil { glog.Errorf("read chunk: %v", err) return fmt.Errorf("read chunk: %v", err) + } else if len(data) == 0 { + glog.Errorf("data size zero read chunk: %s", urlStrings) + return fmt.Errorf("data size zero read chunk: %s", urlStrings) + } else if len(chunkViews) == 1 && int64(len(data)) != size { + glog.Errorf("data size not eq %i read chunk: %s", size, urlStrings) + return fmt.Errorf("data size not eq %i read chunk: %s", size, urlStrings) } + _, err = w.Write(data) if err != nil { glog.Errorf("write chunk: %v", err) From 58cdcc6d6eb13dd6c887cb7766aa7e4273c6051d Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev Date: Thu, 11 Mar 2021 23:34:36 +0500 Subject: [PATCH 2/2] error if urls not found --- weed/filer/stream.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/weed/filer/stream.go b/weed/filer/stream.go index 292e41f82..573ab65e8 100644 --- a/weed/filer/stream.go +++ b/weed/filer/stream.go @@ -26,6 +26,9 @@ func StreamContent(masterClient wdclient.HasLookupFileIdFunction, w io.Writer, c if err != nil { glog.V(1).Infof("operation LookupFileId %s failed, err: %v", chunkView.FileId, err) return err + } else if len(urlStrings) == 0 { + glog.Errorf("operation LookupFileId %s failed, err: urls not found", chunkView.FileId) + return fmt.Errorf("operation LookupFileId %s failed, err: urls not found", chunkView.FileId) } fileId2Url[chunkView.FileId] = urlStrings } @@ -38,12 +41,6 @@ func StreamContent(masterClient wdclient.HasLookupFileIdFunction, w io.Writer, c if err != nil { glog.Errorf("read chunk: %v", err) return fmt.Errorf("read chunk: %v", err) - } else if len(data) == 0 { - glog.Errorf("data size zero read chunk: %s", urlStrings) - return fmt.Errorf("data size zero read chunk: %s", urlStrings) - } else if len(chunkViews) == 1 && int64(len(data)) != size { - glog.Errorf("data size not eq %i read chunk: %s", size, urlStrings) - return fmt.Errorf("data size not eq %i read chunk: %s", size, urlStrings) } _, err = w.Write(data)