mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-24 21:26:28 +00:00
fix(ecstore): terminate walk directory streams (#6462)
* fix(ecstore): terminate walk directory streams * test(e2e): refresh node service selection * fix(filemeta): initialize empty metacache streams
This commit is contained in:
@@ -894,6 +894,7 @@ impl<W: AsyncWrite + Unpin> MetacacheWriter<W> {
|
||||
}
|
||||
|
||||
pub async fn close(&mut self) -> Result<()> {
|
||||
self.init().await?;
|
||||
rmp::encode::write_bool(&mut self.buf, false).map_err(|e| Error::other(format!("{e:?}")))?;
|
||||
self.flush().await?;
|
||||
Ok(())
|
||||
@@ -1285,6 +1286,16 @@ mod tests {
|
||||
assert_eq!(objs, nobjs);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn empty_writer_emits_a_valid_stream() {
|
||||
let mut output = Cursor::new(Vec::new());
|
||||
let mut writer = MetacacheWriter::new(&mut output);
|
||||
writer.close().await.expect("empty stream should close");
|
||||
|
||||
let mut reader = MetacacheReader::new(Cursor::new(output.into_inner()));
|
||||
assert!(reader.read_all().await.expect("empty stream should decode").is_empty());
|
||||
}
|
||||
|
||||
fn corrupt_stream_with_metadata_len(len_marker: u8, len: u32) -> Vec<u8> {
|
||||
let mut data = Vec::new();
|
||||
rmp::encode::write_u8(&mut data, METACACHE_STREAM_VERSION).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user