about summary refs log tree commit diff
path: root/tvix/castore
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/castore')
-rw-r--r--tvix/castore/protos/rpc_directory.proto5
-rw-r--r--tvix/castore/src/directoryservice/mod.rs5
2 files changed, 10 insertions, 0 deletions
diff --git a/tvix/castore/protos/rpc_directory.proto b/tvix/castore/protos/rpc_directory.proto
index 7fccb6c75e34..f4f41c433a76 100644
--- a/tvix/castore/protos/rpc_directory.proto
+++ b/tvix/castore/protos/rpc_directory.proto
@@ -14,6 +14,11 @@ service DirectoryService {
   // Keep in mind multiple DirectoryNodes in different parts of the graph might
   // have the same digest if they have the same underlying contents,
   // so sending subsequent ones can be omitted.
+  //
+  // It is okay for certain implementations to only allow retrieval of
+  // Directory digests that are at the "root", aka the last element that's
+  // sent in a Put. This makes sense for implementations bundling closures of
+  // directories together in batches.
   rpc Get(GetDirectoryRequest) returns (stream Directory);
 
   // Put uploads a graph of Directory messages.
diff --git a/tvix/castore/src/directoryservice/mod.rs b/tvix/castore/src/directoryservice/mod.rs
index db3d5767eadd..8a10121d6d88 100644
--- a/tvix/castore/src/directoryservice/mod.rs
+++ b/tvix/castore/src/directoryservice/mod.rs
@@ -23,6 +23,11 @@ pub trait DirectoryService: Send + Sync {
     /// Looks up a single Directory message by its digest.
     /// The returned Directory message *must* be valid.
     /// In case the directory is not found, Ok(None) is returned.
+    ///
+    /// It is okay for certain implementations to only allow retrieval of
+    /// Directory digests that are at the "root", aka the last element that's
+    /// sent to a DirectoryPutter. This makes sense for implementations bundling
+    /// closures of directories together in batches.
     async fn get(&self, digest: &B3Digest) -> Result<Option<proto::Directory>, Error>;
     /// Uploads a single Directory message, and returns the calculated
     /// digest, or an error. An error *must* also be returned if the message is