fix: preserve data on self metadata copy (#2819)

Co-authored-by: cxymds <Cxymds@qq.com>
This commit is contained in:
安正超
2026-05-06 14:28:36 +08:00
committed by GitHub
parent 7692c0c3bd
commit 50ddec3ffc
7 changed files with 199 additions and 17 deletions
+8
View File
@@ -201,6 +201,10 @@ impl FileMeta {
}
pub fn update_object_version(&mut self, fi: FileInfo) -> Result<()> {
self.update_object_version_with_opts(fi, false)
}
pub fn update_object_version_with_opts(&mut self, fi: FileInfo, replace_user_metadata: bool) -> Result<()> {
for version in self.versions.iter_mut() {
match version.header.version_type {
VersionType::Invalid | VersionType::Legacy => (),
@@ -213,6 +217,10 @@ impl FileMeta {
let mut ver = FileMetaVersion::try_from(version.meta.as_slice())?;
if let Some(ref mut obj) = ver.object {
if replace_user_metadata {
obj.meta_user.clear();
}
for (k, v) in fi.metadata.iter() {
// Split metadata into meta_user and meta_sys based on prefix
// This logic must match From<FileInfo> for MetaObject