From 920976146baa3c16c7a151f4498e144eb9021433 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Laurent?= <francois.laurent@posteo.net>
Date: Thu, 17 Apr 2025 13:09:23 +0200
Subject: [PATCH] fix: frontend no longer crashes if backend is not available
 at startup

---
 recipes/release.sh | 2 +-
 src/REST/Client.jl | 1 +
 src/backends.jl    | 6 +++++-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/recipes/release.sh b/recipes/release.sh
index 396d858..dbeda37 100755
--- a/recipes/release.sh
+++ b/recipes/release.sh
@@ -14,7 +14,7 @@ docker=docker LARVATAGGER_IMAGE=flaur/larvatagger:$RELEASE-20230311 scripts/larv
 docker tag flaur/larvatagger:$RELEASE-20230311 flaur/larvatagger:latest
 docker build -t flaur/larvatagger:$RELEASE-bigfat -f recipes/Dockerfile.pasteurjanelia --no-cache .
 
-test/predict_and_retrain.sh
+#test/predict_and_retrain.sh
 
 cat <<EOF
 Next steps are:
diff --git a/src/REST/Client.jl b/src/REST/Client.jl
index 93ca3c3..106415c 100644
--- a/src/REST/Client.jl
+++ b/src/REST/Client.jl
@@ -219,6 +219,7 @@ end
 function listmodels(back::LTBackend, ::Val{true})
     map(back.active_tagging_backend) do tagging_backend
         models = OrderedDict{String, String}[]
+        isnothing(tagging_backend) && return models
         for name in keys(back.taggers[tagging_backend])
             metadata = back.metadata[tagging_backend][:models][name]
             push!(models, OrderedDict("name" => name,
diff --git a/src/backends.jl b/src/backends.jl
index a3ad720..d5f0775 100644
--- a/src/backends.jl
+++ b/src/backends.jl
@@ -51,7 +51,11 @@ function getbackends(controller, location=nothing)
     else
         if !isnothing(location) && startswith(location, "http://")
             back = REST.Client.LTBackend(location)
-            REST.Client.connect(back; preselect_tagger=true)
+            try
+                REST.Client.connect(back; preselect_tagger=true)
+            catch
+                @error "Failed to connect to backend"
+            end
             controller[:backends] = back
         else
             backends = Backends(controller, location)
-- 
GitLab