From b38badf2063b4eba31abffbeba01c1c8c3212be8 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Tue, 20 Feb 2024 15:35:55 +0700 Subject: docs(tvix/castore/directorysvc): K/V is not necessarily flat Some implementations of DirectoryService might not allow retrieval of intermediate Directory nodes, that are not at the "root". Think about an object store implementation. The client is doing a get_recursive anyways to reduce the number of roundtrips. By documenting the fact we don't need to support looking up intermediate Directory messages, we can just batch all directories into the same object, keyed by the root. Change-Id: I019d720186d03c4125cec9191e93d20586a20963 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10988 Autosubmit: flokli Reviewed-by: tazjin Tested-by: BuildkiteCI --- tvix/castore/src/directoryservice/mod.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'tvix/castore/src') diff --git a/tvix/castore/src/directoryservice/mod.rs b/tvix/castore/src/directoryservice/mod.rs index db3d5767ea..8a10121d6d 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, Error>; /// Uploads a single Directory message, and returns the calculated /// digest, or an error. An error *must* also be returned if the message is -- cgit 1.4.1