From 450407fda17711d62513ca9fdfa0d58a9dd8d3b6 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 28 Jan 2026 01:14:14 -0800 Subject: [PATCH] s3tables: improve error handling specificity in ListTableBuckets - Specifically check for 'not found' errors instead of catching all errors - Return empty list only when directory doesn't exist - Propagate other errors (network, permission) with context - Prevents masking real errors --- weed/s3api/s3tables/handler_bucket_get_list_delete.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/weed/s3api/s3tables/handler_bucket_get_list_delete.go b/weed/s3api/s3tables/handler_bucket_get_list_delete.go index 12775c3e5..b096ee0b4 100644 --- a/weed/s3api/s3tables/handler_bucket_get_list_delete.go +++ b/weed/s3api/s3tables/handler_bucket_get_list_delete.go @@ -122,8 +122,14 @@ func (h *S3TablesHandler) handleListTableBuckets(w http.ResponseWriter, r *http. }) if err != nil { - // If the directory doesn't exist, return empty list - buckets = []TableBucketSummary{} + // Check if it's a "not found" error - return empty list in that case + if strings.Contains(err.Error(), "no entry is found") || strings.Contains(err.Error(), "not found") { + buckets = []TableBucketSummary{} + } else { + // For other errors, return error response + h.writeError(w, http.StatusInternalServerError, ErrCodeInternalError, fmt.Sprintf("failed to list table buckets: %v", err)) + return err + } } resp := &ListTableBucketsResponse{