manifest decode & profile validate optimization
This commit is contained in:
@@ -260,13 +260,17 @@ fn revalidate_cached_pack_with_current_time(
|
||||
.map(|f| (f.rsync_uri.as_str(), f))
|
||||
.collect();
|
||||
|
||||
for entry in &manifest.manifest.files {
|
||||
let entries = manifest
|
||||
.manifest
|
||||
.parse_files()
|
||||
.map_err(|e| ManifestFreshError::Decode(ManifestDecodeError::Validate(e)))?;
|
||||
for entry in &entries {
|
||||
let rsync_uri =
|
||||
join_rsync_dir_and_file(&pack.publication_point_rsync_uri, &entry.file_name);
|
||||
join_rsync_dir_and_file(&pack.publication_point_rsync_uri, entry.file_name.as_str());
|
||||
let Some(file) = by_uri.get(rsync_uri.as_str()) else {
|
||||
return Err(ManifestCachedError::CachedMissingFile { rsync_uri });
|
||||
};
|
||||
if file.sha256.as_slice() != entry.hash_bytes.as_slice() {
|
||||
if file.sha256.as_slice() != entry.hash_bytes.as_ref() {
|
||||
return Err(ManifestCachedError::CachedHashMismatch { rsync_uri });
|
||||
}
|
||||
}
|
||||
@@ -388,9 +392,11 @@ fn try_build_fresh_pack(
|
||||
}
|
||||
}
|
||||
|
||||
let mut files = Vec::with_capacity(manifest.manifest.files.len());
|
||||
for entry in &manifest.manifest.files {
|
||||
let rsync_uri = join_rsync_dir_and_file(publication_point_rsync_uri, &entry.file_name);
|
||||
let entries = manifest.manifest.parse_files().map_err(ManifestDecodeError::Validate)?;
|
||||
let mut files = Vec::with_capacity(manifest.manifest.file_count());
|
||||
for entry in &entries {
|
||||
let rsync_uri =
|
||||
join_rsync_dir_and_file(publication_point_rsync_uri, entry.file_name.as_str());
|
||||
let bytes = store
|
||||
.get_raw(&rsync_uri)
|
||||
.map_err(|_e| ManifestFreshError::MissingFile {
|
||||
@@ -401,7 +407,7 @@ fn try_build_fresh_pack(
|
||||
})?;
|
||||
|
||||
let computed = sha2::Sha256::digest(&bytes);
|
||||
if computed.as_slice() != entry.hash_bytes.as_slice() {
|
||||
if computed.as_slice() != entry.hash_bytes.as_ref() {
|
||||
return Err(ManifestFreshError::HashMismatch { rsync_uri });
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user