Files
OmniRoute/docs/i18n/az/docs/ops/SQLITE_RUNTIME.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

8.7 KiB
Raw Blame History

SQLite Runtime Resolution (Azərbaycan dili)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


OmniRoute işə salınarkən SQLite drayverini 5 mərhələli ehtiyat seçim zənciri vasitəsilə müəyyən edir:

  1. Paketə daxil edilmiş better-sqlite3 (package.json faylındakı dependencies vasitəsilə) — ən sürətli seçimdir, yerli binar fayldan istifadə edir və qurma alətləri mövcud olduqda npm install tərəfindən quraşdırılır.

  2. İcra zamanı quraşdırılmış better-sqlite3 (~/.omniroute/runtime/ daxilində) — ilk işəsalma zamanı VƏ YA scripts/build/postinstall.mjs → scripts/postinstall.mjs vasitəsilə təxirə salınmış şəkildə quraşdırılır. Zədələnmiş və ya yanlış platforma üçün nəzərdə tutulmuş binar faylların yüklənməsinin qarşısını almaq məqsədilə yükləmədən əvvəl yerli .node sehrli baytlarını (ELF / Mach-O / PE) yoxlayır.

  3. node:sqlite (Node ≥22.5 standart kitabxanası) — yerli qurma tələb etmir; hər iki better-sqlite3 yolu uğursuz olduqda istifadə edilir. Məhdud funksiyalar dəstinə malikdir.

  4. sql.js (WASM) — son ehtiyat seçimidir. Hər yerdə işləyir, lakin daha yavaşdır və məlumatları sinxron şəkildə deyil, müəyyən intervallarla yazır.

Bu mürəkkəblik niyə lazımdır?

  • Windows EBUSY: Əvvəlki versiyanın better_sqlite3.node faylı işləyən proses tərəfindən kilidlənibsə, npm install -g omniroute@latest uğursuz ola bilər. ~/.omniroute/runtime/ daxilində icra zamanı quraşdırma qlobal npm keşindən yan keçir.
  • Qurma alətlərinin olmaması: Bəzi mühitlər (VS Build Tools olmayan korporativ Windows, minimal Docker obrazları) better-sqlite3 paketini kompilyasiya edə bilmir. İcra zamanı quraşdırıcı npm reyestrindən əvvəlcədən qurulmuş binar faylı əldə edir; bu da uğursuz olarsa, ehtiyat drayverlər OmniRoute-un yenə də işə düşməsini təmin edir.
  • Şəbəkədən təcrid olunmuş sistemlər: npm reyestrinə giriş mümkün olmadıqda, node:sqlite və ya sql.js baza funksionallığını təmin edir.

Sehrli baytların yoxlanması

OmniRoute icra zamanı quraşdırılmış .node faylını yükləməzdən əvvəl ilk 8 baytı oxuyur və onları məlum platforma sehrli baytları ilə müqayisə edir:

Platforma Baytlar (hex) Etiket
Linux 7F 45 4C 46 elf
macOS 64-bit BE FE ED FA CF macho
macOS 64-bit LE CF FA ED FE macho-le
macOS fat (universal) CA FE BA BE macho-fat
Windows 4D 5A (MZ) pe

Sehrli baytlar uyğun gəlmədikdə → fayl nəzərə alınmır və ehtiyat seçim prosesi növbəti mərhələyə keçir.

Aktiv drayverin yoxlanması

import { getDriverInfo } from "@/lib/db/core";

const info = getDriverInfo();
// { source: "bundled" | "runtime" | "runtime-installed-now" | "node-sqlite" | "sql-js",
//   kind: "better-sqlite3" | "node-sqlite" | "sql-js" }

Əl ilə idarəetmə

# Sürətli CI quraşdırmaları üçün postinstall ilkin hazırlığını ötür
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute

# İcra zamanı istifadə olunan better-sqlite3 paketini məcburi şəkildə yenidən quraşdır
rm -rf ~/.omniroute/runtime
omniroute  # növbəti işəsalma zamanı yenidən quraşdırılacaq

# Hansı drayverin aktiv olduğunu yoxla
omniroute config db-info  # (CLI əmri mövcuddursa)

İstinad

Reallaşdırma:

  • bin/cli/runtime/magicBytes.mjs — binar sehrli baytların yoxlanması üçün köməkçi funksiyalar
  • bin/cli/runtime/sqliteRuntime.mjs — 5 mərhələli icra zamanı həlledicisi + təxirə salınmış quraşdırıcı
  • bin/cli/runtime/index.mjs — işəsalma orkestratoru (warmUpRuntimes())
  • scripts/postinstall.mjs — npm quraşdırmadan sonrakı qarmağı (uğursuzluğu kritik olmayan ilkin hazırlıq)
  • src/lib/db/core.tsensureDbInitialized() / getDriverInfo() ixracları

Tək yazıcı topologiyası (HA dəstəklənmir)

Yuxarıdakı drayver ehtiyat seçim zənciri yenə də bir prosesdə işləyir. Defolt SQLite konfiqurasiyasında OmniRoute tək yazıcıdır:

  • İki OmniRoute replikasını eyni storage.sqlite faylına qoşmayın.
  • Konteynerin yenidən başladılması, Recreate yerləşdirməsi, OOM səbəbindən dayandırılma və ya HEALTHCHECK yenidən başlatması icra prosesində olan bütün SSE sessiyalarını dayandırır. Standart icra yolunda sessiyaların mərhələli şəkildə bağlanması yoxdur.
  • Yavaş /healthz cavabını prosesin dayanması kimi qiymətləndirən orkestratorun canlılıq yoxlaması yeganə replikanı dayandıracaq. TCP canlılıq yoxlamasına və HTTP /healthz hazırlıq yoxlamasına üstünlük verin. Baxın: Docker təlimatı — əlçatanlıqKubernetes yoxlama tövsiyələri.