Postgres e Redis
Fai girare un server e diversi worker su uno store Postgres e un broker Redis condivisi.
Prerequisiti
- i plugin
afe-postgreseafe-redisinstallati. - Docker, per far girare Postgres e Redis in locale con
docker/compose.yml.
Passi
-
Nomina uno store e un broker in un manifest
Runtime.Un processo
afe servee diversi processiafe workercondividono allora gli stessi ticket in sicurezza. Il lock per ticket e lo store write-ahead impediscono a due worker di ripetere il lavoro. -
Avvia Postgres e Redis per le esecuzioni locali con
docker/compose.yml.Fa girare Postgres 17 su
127.0.0.1:5434e Redis 8 su127.0.0.1:6381. Gli stessi servizi servono le esecuzioni locali,make integrationemake e2e. Fermali conmake down, che ferma anche Langfuse, il collector OpenTelemetry e il cluster kind quando sono accesi. -
Avvia un
afe servee diversi processiafe workersu quello store e quel broker.
Migrazioni
Il plugin Postgres porta con sé migrazioni SQL numerate.
All'avvio prende un lock consultivo di Postgres, crea una tabella schema_version e applica ogni
migrazione sopra la versione registrata, una transazione ciascuna. Due processi che partono insieme
applicano ogni migrazione una volta sola. Un database già all'ultima versione non viene toccato.
Risoluzione dei problemi
Sintomo: afe serve o afe worker non riesce a connettersi, con un errore connection refused.
Causa: Postgres o Redis non sono attivi, oppure AFE_POSTGRES_DSN e AFE_REDIS_URL puntano
all'host o alla porta sbagliati.
Rimedio: avvia i servizi con docker compose -f docker/compose.yml up -d --wait, poi controlla
entrambe le variabili contro le porte indicate sopra.
Sintomo: due processi partono insieme e uno registra un errore di migrazione. Causa: non dovrebbe succedere. Il lock consultivo serializza le migrazioni tra i processi. Rimedio: segnalalo, con l'errore completo, come difetto: indica una migrazione rotta o un lock che non ha tenuto.