From cc15aa0180bb907a218d3b12e1e3471866652388 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Tue, 3 Nov 2026 06:59:44 -0800 Subject: [PATCH] Fix: make index and llmindex init wait for tesseract language install (#14670) * Fix: make index and llmindex init wait for tesseract language install * Updates this out of date diagram and makes it Mermaid --- docker/init-flow.drawio.png | Bin 30635 -> 0 bytes docker/init-flow.md | 57 ++++++++++++++++++ .../dependencies.d/init-tesseract-langs | 0 .../dependencies.d/init-tesseract-langs | 0 4 files changed, 57 insertions(+) delete mode 100644 docker/init-flow.drawio.png create mode 100644 docker/init-flow.md create mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/init-llmindex-migrate/dependencies.d/init-tesseract-langs create mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/init-search-index/dependencies.d/init-tesseract-langs diff --git a/docker/init-flow.drawio.png b/docker/init-flow.drawio.png deleted file mode 100644 index 2e19ac16a093b733d56196bc4eb44c28cd5e6581..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30635 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 n9 B` means B lists A in its `dependencies.d/`, so B waits for A. Redundant (transitive) edges are omitted. + +Each labelled box is a group of services that can run in parallel: every service in it starts as soon as its own dependencies finish, so services in the same box run in parallel. A service does not wait for the rest of its group, only for the arrows pointing at it. Long-running services such as `init-tesseract-langs` (package installs) overlap with several later steps. + +```mermaid +flowchart TD + subgraph w3 ["Run in parallel"] + init-tesseract-langs + init-modify-user + init-wait-for-db + init-wait-for-redis + end + subgraph w4 ["Run in parallel"] + init-folders + init-compile-bytecode + end + subgraph w6 ["Run in parallel"] + init-search-index + init-llmindex-migrate + init-superuser + end + + base --> init-start --> init-env-file + + init-env-file --> init-tesseract-langs + init-env-file --> init-modify-user + init-env-file --> init-wait-for-db + init-env-file --> init-wait-for-redis + init-start --> init-compile-bytecode + + init-modify-user --> init-folders + init-modify-user --> init-compile-bytecode + + init-folders --> init-migrations + init-compile-bytecode --> init-migrations + init-wait-for-db --> init-migrations + + init-migrations --> init-search-index + init-migrations --> init-llmindex-migrate + init-migrations --> init-superuser + + init-tesseract-langs --> init-search-index + init-tesseract-langs --> init-llmindex-migrate + init-tesseract-langs --> init-system-checks + init-superuser --> init-system-checks + + init-search-index --> init-custom-init + init-system-checks --> init-custom-init + init-wait-for-redis --> init-custom-init + + init-custom-init --> init-complete + init-llmindex-migrate --> init-complete +``` + +`init-search-index` and `init-llmindex-migrate` run `manage.py`, which runs the Django system checks, including the check that the configured OCR languages are installed, so they wait for `init-tesseract-langs`. diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-llmindex-migrate/dependencies.d/init-tesseract-langs b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-llmindex-migrate/dependencies.d/init-tesseract-langs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-search-index/dependencies.d/init-tesseract-langs b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-search-index/dependencies.d/init-tesseract-langs new file mode 100644 index 0000000000..e69de29bb2