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:
Zhengchao An
2026-08-23 21:32:39 +08:00
committed by GitHub
parent f694a0000a
commit 5cedf73d7c
6 changed files with 197 additions and 163 deletions
+11
View File
@@ -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();