fix put_object content-length empty

This commit is contained in:
weisd
2024-11-09 20:11:53 +08:00
parent bf71bc27b9
commit 2ed6d48a1b
2 changed files with 35 additions and 26 deletions
+11 -2
View File
@@ -67,7 +67,9 @@ impl Erasure {
); );
let mut total: usize = 0; let mut total: usize = 0;
loop { loop {
if total_size > 0 {
let new_len = { let new_len = {
let remain = total_size - total; let remain = total_size - total;
if remain > self.block_size { if remain > self.block_size {
@@ -77,7 +79,7 @@ impl Erasure {
} }
}; };
if new_len == 0 { if new_len == 0 && total > 0 {
break; break;
} }
@@ -93,8 +95,8 @@ impl Erasure {
} }
} }
}; };
total += self.buf.len(); total += self.buf.len();
}
let blocks = self.encode_data(&self.buf)?; let blocks = self.encode_data(&self.buf)?;
let mut errs = Vec::new(); let mut errs = Vec::new();
@@ -112,6 +114,9 @@ impl Erasure {
let none_count = errs.iter().filter(|&x| x.is_none()).count(); let none_count = errs.iter().filter(|&x| x.is_none()).count();
if none_count >= write_quorum { if none_count >= write_quorum {
if total_size == 0 {
break;
}
continue; continue;
} }
@@ -119,6 +124,10 @@ impl Erasure {
warn!("Erasure encode errs {:?}", &errs); warn!("Erasure encode errs {:?}", &errs);
return Err(err); return Err(err);
} }
if total_size == 0 {
break;
}
} }
Ok(total) Ok(total)
+2 -2
View File
@@ -588,7 +588,7 @@ impl S3 for FS {
let Some(body) = body else { return Err(s3_error!(IncompleteBody)) }; let Some(body) = body else { return Err(s3_error!(IncompleteBody)) };
let Some(content_length) = content_length else { return Err(s3_error!(IncompleteBody)) }; let content_length = content_length.unwrap_or_default();
let mut reader = PutObjReader::new(body, content_length as usize); let mut reader = PutObjReader::new(body, content_length as usize);
@@ -677,7 +677,7 @@ impl S3 for FS {
// let upload_id = // let upload_id =
let body = body.ok_or_else(|| s3_error!(IncompleteBody))?; let body = body.ok_or_else(|| s3_error!(IncompleteBody))?;
let content_length = content_length.ok_or_else(|| s3_error!(IncompleteBody))?; let content_length = content_length.unwrap_or_default();
// mc cp step 4 // mc cp step 4
let mut data = PutObjReader::new(body, content_length as usize); let mut data = PutObjReader::new(body, content_length as usize);