feat(tvix/nar-bridge): add 404 handler for GET/HEAD /nar/…
We currently send 405, and that confuses `nix copy`. Send a 404 for now, and add a futurework, as we can actually at least do something more meaningful in case we still have that nar hash in our LRU, which would avoid some unnecessary uploads in some cases. Change-Id: If625e9bd0fd6506cb73b88962d889aa08315fcea Reviewed-on: https://cl.tvl.fyi/c/depot/+/11987 Tested-by: BuildkiteCI Reviewed-by: Brian Olsen <me@griff.name>
This commit is contained in:
parent
5d906054da
commit
5bd48de418
1 changed files with 9 additions and 0 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
use axum::http::StatusCode;
|
||||||
use axum::routing::{head, put};
|
use axum::routing::{head, put};
|
||||||
use axum::{routing::get, Router};
|
use axum::{routing::get, Router};
|
||||||
use lru::LruCache;
|
use lru::LruCache;
|
||||||
|
@ -50,6 +51,10 @@ impl AppState {
|
||||||
pub fn gen_router(priority: u64) -> Router<AppState> {
|
pub fn gen_router(priority: u64) -> Router<AppState> {
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/", get(root))
|
.route("/", get(root))
|
||||||
|
// FUTUREWORK: respond for NARs that we still have in root_nodes (at least HEAD)
|
||||||
|
// This avoids some unnecessary NAR uploading from multiple concurrent clients, and is cheap.
|
||||||
|
.route("/nar/:nar_str", get(four_o_four))
|
||||||
|
.route("/nar/:nar_str", head(four_o_four))
|
||||||
.route("/nar/:nar_str", put(nar::put))
|
.route("/nar/:nar_str", put(nar::put))
|
||||||
.route("/nar/tvix-castore/:root_node_enc", get(nar::get))
|
.route("/nar/tvix-castore/:root_node_enc", get(nar::get))
|
||||||
.route("/:narinfo_str", get(narinfo::get))
|
.route("/:narinfo_str", get(narinfo::get))
|
||||||
|
@ -61,6 +66,10 @@ async fn root() -> &'static str {
|
||||||
"Hello from nar-bridge"
|
"Hello from nar-bridge"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn four_o_four() -> Result<(), StatusCode> {
|
||||||
|
Err(StatusCode::NOT_FOUND)
|
||||||
|
}
|
||||||
|
|
||||||
async fn nix_cache_info(priority: u64) -> String {
|
async fn nix_cache_info(priority: u64) -> String {
|
||||||
format!(
|
format!(
|
||||||
"StoreDir: /nix/store\nWantMassQuery: 1\nPriority: {}\n",
|
"StoreDir: /nix/store\nWantMassQuery: 1\nPriority: {}\n",
|
||||||
|
|
Loading…
Reference in a new issue