From 94df6c045efcd2d6ffb5fe7a13fae9798d2e198d Mon Sep 17 00:00:00 2001 From: reus Date: Mon, 20 Jan 2025 13:56:04 +0800 Subject: [PATCH 1/2] fileservice: more logs for debugging EOF in Write --- pkg/fileservice/aliyun_sdk.go | 2 +- pkg/fileservice/aws_sdk_v2.go | 2 +- pkg/fileservice/disk_object_storage.go | 2 +- pkg/fileservice/error.go | 7 +++++++ pkg/fileservice/minio_sdk.go | 2 +- pkg/fileservice/qcloud_sdk.go | 2 +- 6 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pkg/fileservice/aliyun_sdk.go b/pkg/fileservice/aliyun_sdk.go index f1389b421c0f6..8df54a7d2ab31 100644 --- a/pkg/fileservice/aliyun_sdk.go +++ b/pkg/fileservice/aliyun_sdk.go @@ -226,7 +226,7 @@ func (a *AliyunSDK) Exists( if a.is404(err) { return false, nil } - return false, err + return false, wrapError("AliyunSDK.Exists", err) } return true, nil diff --git a/pkg/fileservice/aws_sdk_v2.go b/pkg/fileservice/aws_sdk_v2.go index 413a794c0f47a..e20afc820eb8d 100644 --- a/pkg/fileservice/aws_sdk_v2.go +++ b/pkg/fileservice/aws_sdk_v2.go @@ -309,7 +309,7 @@ func (a *AwsSDKv2) Exists( return false, nil } } - return false, err + return false, wrapError("AwsSDKv2.Exists", err) } return output != nil, nil } diff --git a/pkg/fileservice/disk_object_storage.go b/pkg/fileservice/disk_object_storage.go index e2ba7d2277af0..fe7e2696c576a 100644 --- a/pkg/fileservice/disk_object_storage.go +++ b/pkg/fileservice/disk_object_storage.go @@ -95,7 +95,7 @@ func (d *diskObjectStorage) Exists(ctx context.Context, key string) (bool, error if os.IsNotExist(err) { return false, nil } - return false, err + return false, wrapError("diskObjectStorage.Exists", err) } return true, nil } diff --git a/pkg/fileservice/error.go b/pkg/fileservice/error.go index 57e67158d2f90..7123ab6109b64 100644 --- a/pkg/fileservice/error.go +++ b/pkg/fileservice/error.go @@ -16,6 +16,7 @@ package fileservice import ( "errors" + "fmt" "io" "net" "regexp" @@ -108,3 +109,9 @@ func isDiskFull(err error) bool { str := err.Error() return strings.Contains(str, "disk quota exceeded") } + +var errorF = fmt.Errorf + +func wrapError(what string, err error) error { + return errorF(what+": %w", err) +} diff --git a/pkg/fileservice/minio_sdk.go b/pkg/fileservice/minio_sdk.go index 9d53d13b27424..e1f48a52fcc3e 100644 --- a/pkg/fileservice/minio_sdk.go +++ b/pkg/fileservice/minio_sdk.go @@ -312,7 +312,7 @@ func (a *MinioSDK) Exists( if a.is404(err) { return false, nil } - return false, err + return false, wrapError("MinioSDK.Exists", err) } return true, nil diff --git a/pkg/fileservice/qcloud_sdk.go b/pkg/fileservice/qcloud_sdk.go index 008806f8b609a..b7ed42b57b4f2 100644 --- a/pkg/fileservice/qcloud_sdk.go +++ b/pkg/fileservice/qcloud_sdk.go @@ -229,7 +229,7 @@ func (a *QCloudSDK) Exists( if a.is404(err) { return false, nil } - return false, err + return false, wrapError("QCloudSDK.Exists", err) } return true, nil From 620ae8afc8c580e13ca841ec79d8b0993e64d53c Mon Sep 17 00:00:00 2001 From: reus Date: Mon, 20 Jan 2025 14:09:12 +0800 Subject: [PATCH 2/2] fix --- pkg/fileservice/error.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/pkg/fileservice/error.go b/pkg/fileservice/error.go index 7123ab6109b64..bc7d633d6b87d 100644 --- a/pkg/fileservice/error.go +++ b/pkg/fileservice/error.go @@ -16,7 +16,6 @@ package fileservice import ( "errors" - "fmt" "io" "net" "regexp" @@ -110,8 +109,24 @@ func isDiskFull(err error) bool { return strings.Contains(str, "disk quota exceeded") } -var errorF = fmt.Errorf +type errorWrap struct { + what string + err error +} + +var _ error = errorWrap{} + +func (e errorWrap) Error() string { + return e.what + ": " + e.err.Error() +} -func wrapError(what string, err error) error { - return errorF(what+": %w", err) +func (e errorWrap) Unwrap() error { + return e.err +} + +func wrapError(what string, err error) errorWrap { + return errorWrap{ + what: what, + err: err, + } }