Ho provato a eseguire aggiornamenti e ricostruzioni, ma ho ottenuto questo bellissimo errore:
I, [2023-01-18T08:05:48.701709 #1] INFO -- : cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-01-18T08:05:52.431210 #1] INFO -- :
I, [2023-01-18T08:05:52.431807 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
2023-01-18 08:05:59.081 UTC [1166] discourse@discourse ERROR: could not create unique index "index_tags_on_name_ccnew_ccnew_ccnew5"
2023-01-18 08:05:59.081 UTC [1166] discourse@discourse DETAIL: Key (name)=(vuejs) is duplicated.
2023-01-18 08:05:59.081 UTC [1166] discourse@discourse STATEMENT: REINDEX INDEX CONCURRENTLY index_tags_on_name_ccnew_ccnew
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
PG::UniqueViolation: ERROR: could not create unique index "index_tags_on_name_ccnew_ccnew_ccnew5"
DETAIL: Key (name)=(vuejs) is duplicated.
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `async_exec'
Ci sono altri argomenti sul forum con problemi simili (1, 2, 3) ma quando provo ad entrare nel container ottengo questo:
/var/discourse# ./launcher enter app
x86_64 arch detected.
Error: No such container: app
Pertanto, non sono in grado di eliminare gli indici manualmente.
Hai qualche altro suggerimento su quale approccio dovrei adottare ora?
Grazie per la segnalazione del bug. Ci darò un’occhiata, ma credo ci sia un problema con un indice nel tuo database e una recente migrazione tenta di risolverlo, ma alcuni problemi non possono essere risolti senza un intervento umano.
Credo che il commit che ha introdotto la migrazione che fallisce sia questo:
Puoi provare a bloccare la tua istanza di Discourse alla versione precedente che è il commit 690e2f15ab9549486aaa6750e1093c1336bf17f2. Modifica il tuo file app.yml e imposta la chiave version sotto params. Assicurati di decommentare anche quella chiave!
Quindi, tutto dovrebbe avviarsi e dovresti essere in grado di rimuovere il tag duplicato vuejs, ma ciò potrebbe avere alcuni effetti indesiderati se il tag duplicato è in uso. Cercheremo di trovare una soluzione migliore, ma questo dovrebbe funzionare fino ad allora.
Abbiamo visto questo in passato, è un problema da incubo ma è stato isolato come correlato all’aggiornamento.
La struttura dell’indice in PG dipende dalla locale al momento dell’installazione e gli aggiornamenti possono a volte portare a un incubo.
Se il reindicizzazione non viene eseguita abbastanza presto, possono sorgere problemi. Alcuni dei nostri precedenti aggiornamenti di PG docker non l’hanno eseguita… e alcune vecchie installazioni hanno purtroppo una piccola bomba a orologeria.
Oggi questo è in gran parte risolto nell’ecosistema, ma rimane un po’ di dolore.
Forse questo può aiutare a identificare ulteriormente la causa, quindi ecco alcuni dettagli aggiuntivi sul sistema:
L’installazione è effettivamente antica, risale al 2014, ma il sistema viene aggiornato almeno una volta al mese (anche se di solito è ogni due settimane). Quindi non è mai stata saltata una versione principale.
Non c’è un blocco di versione, quindi in pratica stiamo eseguendo la versione più recente disponibile sul ramo main (YOLO!).
Sebbene in passato abbiamo provato pochissimi plugin non ufficiali, tutti i plugin installati sono ufficiali ed è così da almeno… 5 anni.
Ho lo stesso problema, ti ho seguito fino a questa frase.
Come rimuovi effettivamente i duplicati? Emettendo semplicemente un’istruzione SQL delete in Data Explorer? Che dire dei record delle tabelle esterne che puntano a questo tag?
Aggiornamento 1
OK, vedo che non puoi eseguire istruzioni update.
Ora ho usato l’interfaccia grafica e ho semplicemente rinominato il tag.