From 1e77f6f9e1db80db355f92bdd68aed83f9361a3d Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 3 Nov 2023 15:54:24 +0000 Subject: [PATCH 1/3] fix(services/s3): Accept List responses without ETag --- core/src/services/s3/pager.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/services/s3/pager.rs b/core/src/services/s3/pager.rs index 3c5b15ed0337..30646da8ab6c 100644 --- a/core/src/services/s3/pager.rs +++ b/core/src/services/s3/pager.rs @@ -126,8 +126,10 @@ impl oio::Page for S3Pager { let mut meta = Metadata::new(EntryMode::FILE); - meta.set_etag(&object.etag); - meta.set_content_md5(object.etag.trim_matches('"')); + if let Some(etag) = &object.etag { + meta.set_etag(&etag); + meta.set_content_md5(etag.trim_matches('"')); + } meta.set_content_length(object.size); // object.last_modified provides more precious time that contains @@ -168,7 +170,7 @@ struct OutputContent { size: u64, last_modified: String, #[serde(rename = "ETag")] - etag: String, + etag: Option, } #[derive(Default, Debug, Eq, PartialEq, Deserialize)] From 79ba4de86c3de38ead22598a2e03e87b991e9297 Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 3 Nov 2023 15:59:59 +0000 Subject: [PATCH 2/3] tests --- core/src/services/s3/pager.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/core/src/services/s3/pager.rs b/core/src/services/s3/pager.rs index 30646da8ab6c..902374431ca9 100644 --- a/core/src/services/s3/pager.rs +++ b/core/src/services/s3/pager.rs @@ -207,6 +207,11 @@ mod tests { 100 STANDARD + + photos/2008 + 2016-05-30T23:51:29.000Z + 42 + photos/2006/February/ @@ -234,15 +239,21 @@ mod tests { OutputContent { key: "photos/2006".to_string(), size: 56, - etag: "\"d41d8cd98f00b204e9800998ecf8427e\"".to_string(), + etag: Some("\"d41d8cd98f00b204e9800998ecf8427e\"".to_string()), last_modified: "2016-04-30T23:51:29.000Z".to_string(), }, OutputContent { key: "photos/2007".to_string(), size: 100, last_modified: "2016-04-30T23:51:29.000Z".to_string(), - etag: "\"d41d8cd98f00b204e9800998ecf8427e\"".to_string(), - } + etag: Some("\"d41d8cd98f00b204e9800998ecf8427e\"".to_string()), + }, + OutputContent { + key: "photos/2008".to_string(), + size: 42, + last_modified: "2016-05-30T23:51:29.000Z".to_string(), + etag: None, + }, ] ) } From a81423f971da367155972a8f36ddfcbd048f3ea1 Mon Sep 17 00:00:00 2001 From: Adam Cimarosti Date: Fri, 3 Nov 2023 19:37:00 +0000 Subject: [PATCH 3/3] fixed lint issue --- core/src/services/s3/pager.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/services/s3/pager.rs b/core/src/services/s3/pager.rs index 902374431ca9..1525aa4ab497 100644 --- a/core/src/services/s3/pager.rs +++ b/core/src/services/s3/pager.rs @@ -127,7 +127,7 @@ impl oio::Page for S3Pager { let mut meta = Metadata::new(EntryMode::FILE); if let Some(etag) = &object.etag { - meta.set_etag(&etag); + meta.set_etag(etag); meta.set_content_md5(etag.trim_matches('"')); } meta.set_content_length(object.size);