Riparare o ripulire collegamenti e risorse interrotti dopo un ripristino

Abbiamo avuto un crash del server e abbiamo dovuto creare un nuovo server e ripristinare da un backup. È stato un processo snervante, dettagli su cosa è successo e come abbiamo ripristinato qui.

Ora, dopo il ripristino (la chiave è stata disabilitare i caricamenti S3), tutti i collegamenti agli allegati nei post sono interrotti (errore 404). Ho cercato nel forum e non riesco a trovare una soluzione, spero che qualcuno possa indicarmi la giusta direzione.

Ho due opzioni:

  1. Posso correggere questi collegamenti short-url interrotti che puntano agli allegati incorporati nei post (tutti i collegamenti interrotti sono per allegati nei post; le immagini incorporate vengono visualizzate correttamente, altri collegamenti interni funzionano correttamente)?

Ad esempio, l’URL dell’allegato su un post nel forum viene visualizzato come https://XYZ.com/uploads/short-url/phu1HOLvkE8LWpkKYfnMPSWsvHh.zip. Questo è ciò che vedo nei log quando clicco su un collegamento di allegato in un post (che porta a un 404).

Messaggio (5 copie segnalate)

Impossibile elaborare correttamente la risposta di dirottamento: Errno::ENOENT: No such file or directory @ rb_sysopen - /XXXXX.s3.dualstack.us-east-1.amazonaws.com/optimized/1X/46728e07f9819907d1b18387bf02ea7fc25c7981_2_32x32.ico

Backtrace

/var/www/discourse/app/controllers/static_controller.rb:160:in read' /var/www/discourse/app/controllers/static_controller.rb:160:in block (2 levels) in favicon’
/var/www/discourse/lib/distributed_memoizer.rb:16:in block in memoize' /var/www/discourse/lib/distributed_mutex.rb:33:in block in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:29:in synchronize' /var/www/discourse/lib/distributed_mutex.rb:29:in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:14:in synchronize' /var/www/discourse/lib/distributed_memoizer.rb:12:in memoize’
/var/www/discourse/app/controllers/static_controller.rb:138:in block in favicon' /var/www/discourse/lib/hijack.rb:56:in instance_eval’

Spero davvero che ci sia un modo per correggere questi collegamenti short-url dopo aver disabilitato l’opzione di caricamento S3 durante il ripristino del server da un backup. Un nuovo “bake” del post non ha risolto il problema.

  1. Se per qualche motivo questa è una strada senza uscita e non può essere risolta in massa, ora ho migliaia di allegati orfani sul cloud S3, c’è un modo per pulirli e liberare spazio? C’è un modo in cui Discourse può scansionare il suo bucket di caricamenti S3 e cancellare tutti gli asset orfani?

Potrebbe essere stato, o essere stato, possibile capire come correggere quei link, ma capire come farlo va oltre l’ambito di ciò che è fattibile in un forum.

Upload.sha1_from_short_url('phu1HOLvkE8LWpkKYfnMPSWsvHh.zip')
=> "b13050bdcd2d58924ba6ab3e7608b16bfc3cd1b7"

Verifica se hai un file chiamato b13050bdcd2d58924ba6ab3e7608b16bfc3cd1b7.zip da qualche parte nei tuoi caricamenti e/o nel bucket s3. In tal caso, dovrebbe essere possibile, anche se non facile, risolvere le cose.

Dato che non hai incluso i nomi effettivi del forum o del bucket, non possiamo dirlo qui.

1 Mi Piace

Sì, l’ho trovato sotto:

original/2X/b/b13050bdcd2d58924ba6ab3e7608b16bfc3cd1b7.zip

Sarò felice di inviarti i link/dettagli via PM

La cosa molto divertente è che solo gli allegati (come i file) sono danneggiati. Le immagini incorporate vengono visualizzate correttamente.

Quindi il materiale è tutto lì, devi solo riscrivere i post in qualche modo. Non sono sicuro del perché non funzioni, ma i file ci sono.

C’è un modo per eseguirlo in massa dalla console o dall’interfaccia utente o per “scaricare” questi file da S3 in locale?

Credo di sì, ma penso che qualcuno che abbia familiarità con Discourse e Rails dovrà scriverlo. Non sono a conoscenza di una soluzione esistente al tuo problema. Ci sono alcuni argomenti sulla migrazione tra bucket S3 che potrebbero offrire alcuni indizi, ma non credo che il tuo particolare problema sia stato risolto prima.

Dopo il ripristino, dovresti aver riattivato l’opzione di caricamento S3. Sembra che tu non l’abbia fatto?

2 Mi Piace

Ed è difficile farlo dato che è stato impostato su app.yml che potrebbe farlo.

Questo risolverebbe il problema? Mi chiedo solo se sia sicuro provarlo.

Beh, sì, è quello che ti ho raccomandato di fare in primo luogo…
Se non riattivi i caricamenti S3, la funzione short-url li cercherà localmente, ma si trovano su S3.

2 Mi Piace

Ci proverò, ma d’altra parte, quando l’ho abilitato, ha interrotto il ripristino (vedi il mio altro argomento). Con l’aiuto di Jay ho dovuto capire come disabilitare il caricamento per poterlo ripristinare. Sei riuscito a ripristinare un server con l’opzione abilitata?

Devi fare quanto segue:

  • Disabilitare l’impostazione
  • Ripristinare
  • Abilitare l’impostazione

Come ho descritto nel nostro scambio di messaggi privati la scorsa settimana

2 Mi Piace