aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/api/admin/bucket.rs4
-rw-r--r--src/api/admin/key.rs4
-rw-r--r--src/api/s3/get.rs4
-rw-r--r--src/api/s3/multipart.rs8
-rw-r--r--src/garage/admin/block.rs2
-rw-r--r--src/garage/repair/online.rs4
-rw-r--r--src/model/s3/mpu_table.rs13
-rw-r--r--src/model/s3/version_table.rs5
-rw-r--r--src/web/web_server.rs2
9 files changed, 22 insertions, 24 deletions
diff --git a/src/api/admin/bucket.rs b/src/api/admin/bucket.rs
index 6ccc3808..17f46c30 100644
--- a/src/api/admin/bucket.rs
+++ b/src/api/admin/bucket.rs
@@ -192,8 +192,8 @@ async fn bucket_info_results(
}
}),
keys: relevant_keys
- .into_iter()
- .map(|(_, key)| {
+ .into_values()
+ .map(|key| {
let p = key.state.as_option().unwrap();
GetBucketInfoKey {
access_key_id: key.key_id,
diff --git a/src/api/admin/key.rs b/src/api/admin/key.rs
index 2bbabb7b..d74ca361 100644
--- a/src/api/admin/key.rs
+++ b/src/api/admin/key.rs
@@ -183,8 +183,8 @@ async fn key_info_results(garage: &Arc<Garage>, key: Key) -> Result<Response<Bod
create_bucket: *key_state.allow_create_bucket.get(),
},
buckets: relevant_buckets
- .into_iter()
- .map(|(_, bucket)| {
+ .into_values()
+ .map(|bucket| {
let state = bucket.state.as_option().unwrap();
KeyInfoBucketResult {
id: hex::encode(bucket.id),
diff --git a/src/api/s3/get.rs b/src/api/s3/get.rs
index aa391745..5e682726 100644
--- a/src/api/s3/get.rs
+++ b/src/api/s3/get.rs
@@ -441,7 +441,7 @@ fn body_from_blocks_range(
// block.part_number, which is not the same in the case of a multipart upload)
let mut blocks: Vec<(VersionBlock, u64)> = Vec::with_capacity(std::cmp::min(
all_blocks.len(),
- 4 + ((end - begin) / std::cmp::max(all_blocks[0].1.size as u64, 1024)) as usize,
+ 4 + ((end - begin) / std::cmp::max(all_blocks[0].1.size, 1024)) as usize,
));
let mut block_offset: u64 = 0;
for (_, b) in all_blocks.iter() {
@@ -452,7 +452,7 @@ fn body_from_blocks_range(
if block_offset < end && block_offset + b.size > begin {
blocks.push((*b, block_offset));
}
- block_offset += b.size as u64;
+ block_offset += b.size;
}
let order_stream = OrderTag::stream();
diff --git a/src/api/s3/multipart.rs b/src/api/s3/multipart.rs
index ecd7a212..611cfd47 100644
--- a/src/api/s3/multipart.rs
+++ b/src/api/s3/multipart.rs
@@ -340,6 +340,7 @@ pub async fn handle_abort_multipart_upload(
// ======== helpers ============
+#[allow(clippy::ptr_arg)]
pub(crate) async fn get_upload(
garage: &Garage,
bucket_id: &Uuid,
@@ -347,13 +348,10 @@ pub(crate) async fn get_upload(
upload_id: &Uuid,
) -> Result<(Object, ObjectVersion, MultipartUpload), Error> {
let (object, mpu) = futures::try_join!(
- garage
- .object_table
- .get(&bucket_id, &key)
- .map_err(Error::from),
+ garage.object_table.get(bucket_id, key).map_err(Error::from),
garage
.mpu_table
- .get(&upload_id, &EmptyKey)
+ .get(upload_id, &EmptyKey)
.map_err(Error::from),
)?;
diff --git a/src/garage/admin/block.rs b/src/garage/admin/block.rs
index 6c2649e0..c4a45738 100644
--- a/src/garage/admin/block.rs
+++ b/src/garage/admin/block.rs
@@ -153,7 +153,7 @@ impl AdminRpcHandler {
let (bucket_id, key, ov_id) = match &version.backlink {
VersionBacklink::Object { bucket_id, key } => (*bucket_id, key.clone(), version.uuid),
VersionBacklink::MultipartUpload { upload_id } => {
- if let Some(mut mpu) = self.garage.mpu_table.get(&upload_id, &EmptyKey).await? {
+ if let Some(mut mpu) = self.garage.mpu_table.get(upload_id, &EmptyKey).await? {
if !mpu.deleted.get() {
mpu.parts.clear();
mpu.deleted.set();
diff --git a/src/garage/repair/online.rs b/src/garage/repair/online.rs
index 9de6166d..abfaf9f9 100644
--- a/src/garage/repair/online.rs
+++ b/src/garage/repair/online.rs
@@ -170,7 +170,7 @@ impl TableRepair for RepairVersions {
let ref_exists = match &version.backlink {
VersionBacklink::Object { bucket_id, key } => garage
.object_table
- .get(&bucket_id, &key)
+ .get(bucket_id, key)
.await?
.map(|o| {
o.versions().iter().any(|x| {
@@ -180,7 +180,7 @@ impl TableRepair for RepairVersions {
.unwrap_or(false),
VersionBacklink::MultipartUpload { upload_id } => garage
.mpu_table
- .get(&upload_id, &EmptyKey)
+ .get(upload_id, &EmptyKey)
.await?
.map(|u| !u.deleted.get())
.unwrap_or(false),
diff --git a/src/model/s3/mpu_table.rs b/src/model/s3/mpu_table.rs
index 4764e8da..63a4f1af 100644
--- a/src/model/s3/mpu_table.rs
+++ b/src/model/s3/mpu_table.rs
@@ -2,10 +2,10 @@ use std::sync::Arc;
use garage_db as db;
+use garage_util::crdt::Crdt;
use garage_util::data::*;
use garage_util::time::*;
-use garage_table::crdt::*;
use garage_table::replication::TableShardedReplication;
use garage_table::*;
@@ -21,8 +21,6 @@ mod v09 {
use garage_util::data::Uuid;
use serde::{Deserialize, Serialize};
- pub use crate::s3::version_table::v09::VersionBlock;
-
/// A part of a multipart upload
#[derive(PartialEq, Eq, Clone, Debug, Serialize, Deserialize)]
pub struct MultipartUpload {
@@ -30,15 +28,16 @@ mod v09 {
pub upload_id: Uuid,
/// Is this multipart upload deleted
+ /// The MultipartUpload is marked as deleted as soon as the
+ /// multipart upload is either completed or aborted
pub deleted: crdt::Bool,
/// List of uploaded parts, key = (part number, timestamp)
/// In case of retries, all versions for each part are kept
- /// Everything is cleaned up only once the multipart upload is completed or
- /// aborted
+ /// Everything is cleaned up only once the MultipartUpload is marked deleted
pub parts: crdt::Map<MpuPartKey, MpuPart>,
- // Back link to bucket+key so that we can figure if
- // this was deleted later on
+ // Back link to bucket+key so that we can find the object this mpu
+ // belongs to and check whether it is still valid
/// Bucket in which the related object is stored
pub bucket_id: Uuid,
/// Key in which the related object is stored
diff --git a/src/model/s3/version_table.rs b/src/model/s3/version_table.rs
index dcf4110a..5c032f9f 100644
--- a/src/model/s3/version_table.rs
+++ b/src/model/s3/version_table.rs
@@ -134,8 +134,9 @@ pub(crate) mod v09 {
/// list of blocks of data composing the version
pub blocks: crdt::Map<VersionBlockKey, VersionBlock>,
- // Back link to bucket+key so that we can figure if
- // this was deleted later on
+ // Back link to owner of this version (either an object or a multipart
+ // upload), used to find whether it has been deleted and this version
+ // should in turn be deleted (see versions repair procedure)
pub backlink: VersionBacklink,
}
diff --git a/src/web/web_server.rs b/src/web/web_server.rs
index 0c7edf23..de63b842 100644
--- a/src/web/web_server.rs
+++ b/src/web/web_server.rs
@@ -106,7 +106,7 @@ impl WebServer {
addr: SocketAddr,
) -> Result<Response<Body>, Infallible> {
if let Ok(forwarded_for_ip_addr) =
- forwarded_headers::handle_forwarded_for_headers(&req.headers())
+ forwarded_headers::handle_forwarded_for_headers(req.headers())
{
info!(
"{} (via {}) {} {}",