about summary refs log tree commit diff
path: root/tvix/store/src/nar/renderer.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-03-15T23·01+0100
committerflokli <flokli@flokli.de>2023-03-16T13·47+0000
commitee23220564987771c8e7909ded6fb9853f1d1b0d (patch)
treeb1c99097c8912642c9f3582adebff49f9caa3093 /tvix/store/src/nar/renderer.rs
parent9c08cbc9732710a0003cb7bbe0ff7a9950fc22b6 (diff)
refactor(tvix/store/directorysvc): use [u8; 32] instead of Vec<u8> r/6014
Also, simplify the trait interface, only allowing lookups of Directory
objects by their digest.

Change-Id: I6eec28a8cb0557bed9b69df8b8ff99a5e0f8fe35
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8313
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
Diffstat (limited to 'tvix/store/src/nar/renderer.rs')
-rw-r--r--tvix/store/src/nar/renderer.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/tvix/store/src/nar/renderer.rs b/tvix/store/src/nar/renderer.rs
index 94a392d36171..f0708ab739a5 100644
--- a/tvix/store/src/nar/renderer.rs
+++ b/tvix/store/src/nar/renderer.rs
@@ -103,20 +103,23 @@ impl<BS: BlobService, CS: ChunkService + Clone, DS: DirectoryService> NARRendere
             }
             proto::node::Node::Directory(proto_directory_node) => {
                 // get the digest we're referring to
-                let digest = proto_directory_node.digest;
+                let digest: [u8; 32] = proto_directory_node.digest.try_into().map_err(|_e| {
+                    RenderError::StoreError(crate::Error::StorageError(
+                        "invalid digest len in directory node".to_string(),
+                    ))
+                })?;
+
                 // look it up with the directory service
                 let resp = self
                     .directory_service
-                    .get(&proto::get_directory_request::ByWhat::Digest(
-                        digest.to_vec(),
-                    ))
+                    .get(&digest)
                     .map_err(RenderError::StoreError)?;
 
                 match resp {
                     // if it's None, that's an error!
                     None => {
                         return Err(RenderError::DirectoryNotFound(
-                            digest,
+                            digest.to_vec(),
                             proto_directory_node.name,
                         ))
                     }