From 6217d3993eb2160445677a06d22f95492d6b6906 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Sun, 23 Aug 2026 19:31:54 -0700 Subject: [PATCH] fix(scriberr): force uv to copy rather than reflink when building envs Scriberr builds each model backend's Python environment with uv at container start. uv's default link mode reflinks or hardlinks out of its cache, which fails on this overlayfs over ZFS combination and reports it as a failure to clone a metadata file with errno 11, resource temporarily unavailable. The wording points nowhere near the cause. The damage was partial and therefore easy to miss: WhisperX and PyAnnote came up fine and the application served normally, while the Parakeet and Sortformer backends were quietly absent. Setting UV_LINK_MODE to copy trades a little disk and build time for environments that actually materialise, and the occurrence count for that error is zero on the following start. The knob is exposed through the environment so it can be moved back to the default if a future host does support reflinks. --- stacks/scriberr/compose.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/stacks/scriberr/compose.yaml b/stacks/scriberr/compose.yaml index eb40a0c..2fd44cb 100644 --- a/stacks/scriberr/compose.yaml +++ b/stacks/scriberr/compose.yaml @@ -63,6 +63,13 @@ services: # reached by host IP. Keep this in sync with how the app is reached. - ALLOWED_ORIGINS=${SCRIBERR_ALLOWED_ORIGINS} - NVIDIA_DRIVER_CAPABILITIES=compute,utility + # Scriberr builds each model backend's Python env with `uv` at runtime. + # uv's default link mode reflink/hardlinks out of its cache, which fails + # on this overlayfs+ZFS combination with a misleading + # "Failed to clone ... Resource temporarily unavailable (os error 11)" + # and takes out the Parakeet + Sortformer backends (WhisperX survives). + # `copy` trades a little disk and time for it actually working. + - UV_LINK_MODE=${SCRIBERR_UV_LINK_MODE:-copy} deploy: resources: reservations: