Skip to content

Commit

Permalink
Add trust_size to DigestInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
allada committed Oct 31, 2021
1 parent 41f989f commit d8f218f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
9 changes: 6 additions & 3 deletions cas/grpc_service/cas_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ impl CasServer {
let inner_request = grpc_request.into_inner();
let instance_name = inner_request.instance_name;
for digest in inner_request.blob_digests.into_iter() {
let digest: DigestInfo = digest.try_into()?;
let mut digest: DigestInfo = digest.try_into()?;
digest.trust_size = true;
let store_owned = self
.stores
.get(&instance_name)
Expand Down Expand Up @@ -88,7 +89,8 @@ impl CasServer {
let inner_request = grpc_request.into_inner();
let instance_name = inner_request.instance_name;
for request in inner_request.requests {
let digest: DigestInfo = request.digest.err_tip(|| "Digest not found in request")?.try_into()?;
let mut digest: DigestInfo = request.digest.err_tip(|| "Digest not found in request")?.try_into()?;
digest.trust_size = true;
let digest_copy = digest.clone();
let store_owned = self
.stores
Expand Down Expand Up @@ -134,7 +136,8 @@ impl CasServer {
let inner_request = grpc_request.into_inner();
let instance_name = inner_request.instance_name;
for digest in inner_request.digests {
let digest: DigestInfo = digest.try_into()?;
let mut digest: DigestInfo = digest.try_into()?;
digest.trust_size = true;
let digest_copy = digest.clone();
let store_owned = self
.stores
Expand Down
13 changes: 13 additions & 0 deletions util/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,18 @@ use proto::build::bazel::remote::execution::v2::Digest;
use error::{make_input_err, Error, ResultExt};

pub struct DigestInfo {
// Possibly the size of the digest in bytes. This should only be trusted
// if `truest_size` is true.
pub size_bytes: i64,

// Raw hash in packed form.
pub packed_hash: [u8; 32],

// If you can trust the size_bytes to be the size of the data.
// CAS requests/updates should be true, AC should be false.
pub trust_size: bool,

// Cached string representation of the `packed_hash`.
str_hash: LazyTransform<Option<String>, String>,
}

Expand All @@ -29,6 +39,7 @@ impl DigestInfo {
Ok(DigestInfo {
size_bytes: size_bytes,
packed_hash: packed_hash,
trust_size: false,
str_hash: LazyTransform::new(None),
})
}
Expand Down Expand Up @@ -60,6 +71,7 @@ impl Clone for DigestInfo {
DigestInfo {
size_bytes: self.size_bytes,
packed_hash: self.packed_hash,
trust_size: self.trust_size,
str_hash: LazyTransform::new(None),
}
}
Expand All @@ -73,6 +85,7 @@ impl TryFrom<Digest> for DigestInfo {
Ok(DigestInfo {
size_bytes: digest.size_bytes,
packed_hash: packed_hash,
trust_size: false,
str_hash: LazyTransform::new(Some(digest.hash)),
})
}
Expand Down

0 comments on commit d8f218f

Please sign in to comment.