Upgrade failed PG::UniqueViolation -- impossibile creare l'indice univoco "unique_post_links_ccnew"

Ho un’installazione standard che non riesce ad aggiornarsi alla versione 2.8.0.beta2 con questo errore:

PG::UniqueViolation: ERROR:  could not create unique index "unique_post_links_ccnew"

L’errore proviene da:

I, [2021-06-25T18:35:47.756688 #1]  INFO -- : == 20210525112226 RemoveLengthConstrainFromTopicLinkUrl: migrating ============

Non sembra essere un indice corrotto.

Questo può aiutare?

[6] pry(main)> TopicLink.where(url: bad_url).pluck(:id, :topic_id, :post_id, :user_id)
=> [[15733, 14351, 63616, 911], [16131, 14505, 63986, 911], [27141, 14505, 63986, 1152]]

Alla fine ho semplicemente aggiunto badX agli URL duplicati e così ha funzionato. Non sono del tutto sicuro di quali problemi questo potrebbe generare in futuro…

Molti bug di corruzione dell’indice cosiddetti “impossibili” nelle versioni precedenti di Postgres, secondo la nostra esperienza. Li vedi ancora?

Penso di non averlo visto da quando sono passato a pg12.

Siamo arrivati fino a PG13 e penso che per noi abbia risolto il problema (indici corrotti) @sam?

@saj ha risolto questo problema. L’abbiamo risolto nella nostra infrastruttura. La maggior parte degli auto-ospitanti lo ha da allora aggirato.

Il meccanismo che abbiamo utilizzato in passato per aggiornare PG nella nostra immagine open source presentava alcuni problemi di sicurezza intrinseci a causa del cambiamento di libc sotto il cofano tra le versioni di PG.

Penso che il problema sia ora in gran parte scomparso nell’ecosistema più ampio, anche se alcuni vecchi aggiornamenti potrebbero ancora affrontarlo. Sarà un incubo correggere il nostro attuale script di aggiornamento open source e gestire l’enorme matrice di aggiornamenti PG.

Detto questo, almeno siamo molto consapevoli della fonte del problema ora e siamo meglio posizionati per affrontarlo in futuro.