diff --git a/weed/s3api/s3tables/handler_bucket_get_list_delete.go b/weed/s3api/s3tables/handler_bucket_get_list_delete.go index 56bebb49a..830bf9e6c 100644 --- a/weed/s3api/s3tables/handler_bucket_get_list_delete.go +++ b/weed/s3api/s3tables/handler_bucket_get_list_delete.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "fmt" + "io" "net/http" "strings" @@ -106,7 +107,10 @@ func (h *S3TablesHandler) handleListTableBuckets(w http.ResponseWriter, r *http. for { entry, respErr := resp.Recv() if respErr != nil { - break + if respErr == io.EOF { + break + } + return respErr } if entry.Entry == nil { continue @@ -219,7 +223,10 @@ func (h *S3TablesHandler) handleDeleteTableBucket(w http.ResponseWriter, r *http for { entry, err := resp.Recv() if err != nil { - break + if err == io.EOF { + break + } + return err } if entry.Entry != nil && !strings.HasPrefix(entry.Entry.Name, ".") { hasChildren = true diff --git a/weed/s3api/s3tables/handler_table.go b/weed/s3api/s3tables/handler_table.go index 01e407622..b8b3540a3 100644 --- a/weed/s3api/s3tables/handler_table.go +++ b/weed/s3api/s3tables/handler_table.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "io" "net/http" "strings" "time" @@ -338,7 +339,10 @@ func (h *S3TablesHandler) listTablesInNamespaceWithClient(ctx context.Context, c for { entry, respErr := resp.Recv() if respErr != nil { - break + if respErr == io.EOF { + break + } + return respErr } if entry.Entry == nil { continue @@ -415,7 +419,10 @@ func (h *S3TablesHandler) listTablesInAllNamespaces(ctx context.Context, filerCl for { entry, respErr := resp.Recv() if respErr != nil { - break + if respErr == io.EOF { + break + } + return respErr } if entry.Entry == nil { continue