diff options
author | Alex <alex@adnab.me> | 2024-03-26 14:24:58 +0000 |
---|---|---|
committer | Alex <alex@adnab.me> | 2024-03-26 14:24:58 +0000 |
commit | cdde0f19ee37848370d4a138d95c55bfaca820ed (patch) | |
tree | 54128ccf24e8598c52c2a5366ad0b509bf1c296e /src/model/s3/mpu_table.rs | |
parent | 7e0107c47db71e8da13990c9111ebde8cbf60d8f (diff) | |
parent | 74949c69cbf1a8222b6d10a02fcf5fe139ccb560 (diff) | |
download | garage-cdde0f19ee37848370d4a138d95c55bfaca820ed.tar.gz garage-cdde0f19ee37848370d4a138d95c55bfaca820ed.zip |
Merge pull request 'checksum algorithms' (#787) from s3-checksum into next-0.10
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/787
Diffstat (limited to 'src/model/s3/mpu_table.rs')
-rw-r--r-- | src/model/s3/mpu_table.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/model/s3/mpu_table.rs b/src/model/s3/mpu_table.rs index 238cbf11..c9f79caf 100644 --- a/src/model/s3/mpu_table.rs +++ b/src/model/s3/mpu_table.rs @@ -17,6 +17,7 @@ pub const PARTS: &str = "parts"; pub const BYTES: &str = "bytes"; mod v09 { + use crate::s3::object_table::ChecksumValue; use garage_util::crdt; use garage_util::data::Uuid; use serde::{Deserialize, Serialize}; @@ -61,6 +62,9 @@ mod v09 { pub version: Uuid, /// ETag of the content of this part (known only once done uploading) pub etag: Option<String>, + /// Checksum requested by x-amz-checksum-algorithm + #[serde(default)] + pub checksum: Option<ChecksumValue>, /// Size of this part (known only once done uploading) pub size: Option<u64>, } @@ -155,6 +159,11 @@ impl Crdt for MpuPart { (Some(x), Some(y)) if x < y => other.size, (x, _) => x, }; + self.checksum = match (self.checksum.take(), &other.checksum) { + (None, Some(_)) => other.checksum.clone(), + (Some(x), Some(y)) if x < *y => other.checksum.clone(), + (x, _) => x, + }; } } |