diff options
Diffstat (limited to 'tvix')
-rw-r--r-- | tvix/castore-go/rpc_directory_grpc.pb.go | 10 | ||||
-rw-r--r-- | tvix/castore/protos/rpc_directory.proto | 5 | ||||
-rw-r--r-- | tvix/castore/src/directoryservice/mod.rs | 5 |
3 files changed, 20 insertions, 0 deletions
diff --git a/tvix/castore-go/rpc_directory_grpc.pb.go b/tvix/castore-go/rpc_directory_grpc.pb.go index f19e457d867b..98789fef833e 100644 --- a/tvix/castore-go/rpc_directory_grpc.pb.go +++ b/tvix/castore-go/rpc_directory_grpc.pb.go @@ -35,6 +35,11 @@ type DirectoryServiceClient interface { // 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. Get(ctx context.Context, in *GetDirectoryRequest, opts ...grpc.CallOption) (DirectoryService_GetClient, error) // Put uploads a graph of Directory messages. // Individual Directory messages need to be send in an order walking up @@ -131,6 +136,11 @@ type DirectoryServiceServer interface { // 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. Get(*GetDirectoryRequest, DirectoryService_GetServer) error // Put uploads a graph of Directory messages. // Individual Directory messages need to be send in an order walking up 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 |