mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-24 21:26:28 +00:00
test:get_object
This commit is contained in:
@@ -145,6 +145,7 @@ impl FileWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub struct FileReader {
|
pub struct FileReader {
|
||||||
pub inner: File,
|
pub inner: File,
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-6
@@ -56,15 +56,20 @@ impl Erasure {
|
|||||||
while let Some(result) = stream.next().await {
|
while let Some(result) = stream.next().await {
|
||||||
match result {
|
match result {
|
||||||
Ok(data) => {
|
Ok(data) => {
|
||||||
|
total += data.len();
|
||||||
let blocks = self.encode_data(data.as_ref())?;
|
let blocks = self.encode_data(data.as_ref())?;
|
||||||
|
|
||||||
warn!("encode shard size: {}/{} from block_size {} ", blocks[0].len(), blocks.len(), data.len());
|
warn!(
|
||||||
|
"encode shard size: {}/{} from block_size {}, total_size {} ",
|
||||||
|
blocks[0].len(),
|
||||||
|
blocks.len(),
|
||||||
|
data.len(),
|
||||||
|
total_size
|
||||||
|
);
|
||||||
|
|
||||||
let mut errs = Vec::new();
|
let mut errs = Vec::new();
|
||||||
idx += 1;
|
idx += 1;
|
||||||
for (i, w) in writers.iter_mut().enumerate() {
|
for (i, w) in writers.iter_mut().enumerate() {
|
||||||
total += blocks[i].len();
|
|
||||||
|
|
||||||
// debug!(
|
// debug!(
|
||||||
// "{} {}-{} encode write {} , total:{}, readed:{}",
|
// "{} {}-{} encode write {} , total:{}, readed:{}",
|
||||||
// self.id,
|
// self.id,
|
||||||
@@ -119,12 +124,15 @@ impl Erasure {
|
|||||||
|
|
||||||
let mut reader = ShardReader::new(readers, self, offset, total_length);
|
let mut reader = ShardReader::new(readers, self, offset, total_length);
|
||||||
|
|
||||||
|
warn!("ShardReader {:?}", &reader);
|
||||||
|
|
||||||
let start_block = offset / self.block_size;
|
let start_block = offset / self.block_size;
|
||||||
let end_block = (offset + length) / self.block_size;
|
let end_block = (offset + length) / self.block_size;
|
||||||
|
|
||||||
warn!("decode block from {} to {}", start_block, end_block);
|
warn!("decode block from {} to {}", start_block, end_block);
|
||||||
|
|
||||||
let mut bytes_writed = 0;
|
let mut bytes_writed = 0;
|
||||||
|
let mut idx = 0;
|
||||||
for block_idx in start_block..=end_block {
|
for block_idx in start_block..=end_block {
|
||||||
let mut block_offset = 0;
|
let mut block_offset = 0;
|
||||||
let mut block_length = 0;
|
let mut block_length = 0;
|
||||||
@@ -146,7 +154,7 @@ impl Erasure {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
warn!("decode block_offset {},block_length {} ", block_offset, block_length);
|
warn!("decode {} block_offset {},block_length {} ", idx, block_offset, block_length);
|
||||||
|
|
||||||
let mut bufs = reader.read().await?;
|
let mut bufs = reader.read().await?;
|
||||||
|
|
||||||
@@ -157,10 +165,11 @@ impl Erasure {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
bytes_writed += writed_n;
|
bytes_writed += writed_n;
|
||||||
|
idx += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if bytes_writed != length {
|
if bytes_writed != length {
|
||||||
warn!("bytes_writed != length ");
|
warn!("bytes_writed != length: {} != {} ", bytes_writed, length);
|
||||||
return Err(Error::msg("erasure decode less data"));
|
return Err(Error::msg("erasure decode less data"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,7 +200,7 @@ impl Erasure {
|
|||||||
|
|
||||||
let mut offset = offset;
|
let mut offset = offset;
|
||||||
|
|
||||||
debug!("write_data_blocks offset {}, length {}", offset, length);
|
warn!("write_data_blocks offset {}, length {}", offset, length);
|
||||||
|
|
||||||
let mut write = length;
|
let mut write = length;
|
||||||
let mut total_writed = 0;
|
let mut total_writed = 0;
|
||||||
@@ -287,6 +296,7 @@ pub trait ReadAt {
|
|||||||
async fn read_at(&mut self, offset: usize, length: usize) -> Result<(Vec<u8>, usize)>;
|
async fn read_at(&mut self, offset: usize, length: usize) -> Result<(Vec<u8>, usize)>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub struct ShardReader {
|
pub struct ShardReader {
|
||||||
readers: Vec<Option<FileReader>>, // 磁盘
|
readers: Vec<Option<FileReader>>, // 磁盘
|
||||||
data_block_count: usize, // 总的分片数量
|
data_block_count: usize, // 总的分片数量
|
||||||
|
|||||||
Reference in New Issue
Block a user