feat(tvix/nar-bridge): support uploading NAR files

This ingests NAR files into the {Blob,Directory}Service, which are
already part of the AppState.

As we then need to correlate the root node to the uploaded PathInfo, we
need to keep a (short-lived) lookup table from NARHash to root node
around. We insert it into a `LruCache` after the NAR is uploaded, and
use `peek()` to do the lookup, which doesn't update the LRU list.

Change-Id: I48a4c6246bacf76559c5a4ccad2a0bc25c1b7900
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11986
Tested-by: BuildkiteCI
Reviewed-by: Brian Olsen <me@griff.name>
This commit is contained in:
Florian Klink 2024-07-20 10:03:47 +02:00 committed by flokli
parent 861cc1f341
commit 5d906054da
5 changed files with 158 additions and 13 deletions

View file

@ -6888,15 +6888,27 @@ rec {
name = "data-encoding";
packageId = "data-encoding";
}
{
name = "futures";
packageId = "futures";
}
{
name = "itertools";
packageId = "itertools 0.12.0";
}
{
name = "lru";
packageId = "lru";
}
{
name = "nix-compat";
packageId = "nix-compat";
features = [ "async" ];
}
{
name = "parking_lot";
packageId = "parking_lot 0.12.3";
}
{
name = "prost";
packageId = "prost";
@ -7533,7 +7545,7 @@ rec {
}
{
name = "parking_lot";
packageId = "parking_lot 0.12.2";
packageId = "parking_lot 0.12.3";
}
{
name = "percent-encoding";
@ -8128,11 +8140,11 @@ rec {
};
resolvedDefaultFeatures = [ "default" ];
};
"parking_lot 0.12.2" = rec {
"parking_lot 0.12.3" = rec {
crateName = "parking_lot";
version = "0.12.2";
version = "0.12.3";
edition = "2021";
sha256 = "1ys2dzz6cysjmwyivwxczl1ljpcf5cj4qmhdj07d5bkc9z5g0jky";
sha256 = "09ws9g6245iiq8z975h8ycf818a66q3c6zv4b5h8skpm7hc1igzi";
authors = [
"Amanieu d'Antras <amanieu@gmail.com>"
];
@ -14484,7 +14496,7 @@ rec {
}
{
name = "parking_lot";
packageId = "parking_lot 0.12.2";
packageId = "parking_lot 0.12.3";
}
{
name = "petgraph";
@ -15238,7 +15250,7 @@ rec {
}
{
name = "parking_lot";
packageId = "parking_lot 0.12.2";
packageId = "parking_lot 0.12.3";
}
{
name = "pin-project-lite";