Allow configuring PostgreSQL lc_messages locale for Electric's replication connection
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia individuando la configurazione della connessione di replica di Electric e la gestione degli errori nella creazione delle pubblicazioni. Confronta i parametri di connessione e la corrispondenza delle pubblicazioni duplicate descritti nell’issue, quindi determina quale approccio proposto sia adatto al progetto. Il lavoro è completato quando i server PostgreSQL con lc_messages non in inglese non fanno più entrare la connessione di replica in un ciclo di arresti anomali, con una copertura per il caso interessato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
Electric matches PostgreSQL error messages by their text content using pattern matching. However, replication connections in PostgreSQL ignore session-level locale settings (ALTER ROLE SET lc_messages and ALTER DATABASE SET lc_messages) and use only the server-level lc_messages from postgresql.conf.
This means that if a PostgreSQL server is configured with a non-English locale, Electric will receive error messages in that language, the pattern match will fail, and Electric will enter an infinite crash loop.
Example
On a PostgreSQL server with Russian locale, the duplicate publication error comes as "публикация "electric_publication_default" уже существует" instead of the expected "publication "electric_publication_default" already exists". The pin operator match fails and Electric raises the error instead of handling it gracefully.
Possible solutions
- Match only by error code, not message text — simplest fix, already proposed in PR #XXXX. Change the pattern from matching on message text to just code and pg_code: duplicate_object / 42710.
- Use CREATE PUBLICATION IF NOT EXISTS — avoids the duplicate error entirely.
- Allow configuring lc_messages via an Electric environment variable (e.g. ELECTRIC_PG_LC_MESSAGES) passed as a connection parameter, so Electric can force English error messages without requiring changes to the PostgreSQL server configuration.
Workaround
Drop the publication before each Electric restart (e.g. via a Kubernetes init container), so Electric always creates it fresh and never encounters the duplicate error.
Environment
Electric version: 1.7.4 / 1.7.5
PostgreSQL version: 18
PostgreSQL locale: Russian (ru_RU.UTF-8)
- Lingua principale
- Elixir
- Stelle
- 1
- Fork
- 1
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Issue simili
-
Bug: Table layout and date column are cut off on mobile screens on the Tournaments -> History pageApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
hexlet-codebattle/codebattle#2375 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Broadcast API docs say to prepend realtime: to the topic, which breaks deliveryForse già presa @mandar1045 l’ha presa 1 giorno fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
phoenixframework/phoenix_live_view#4509 ·
I maintainer di solito rispondono entro 1 giorno
-
camelToSnake and snakeCamelMapper() drop the underscore when a digit precedes a camelCase boundaryAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
electric-sql/electric#4855 ·