Gentili tutti,
dopo aver cercato nel forum con le migliori mie capacità senza trovare una risposta risolutiva, chiedo supporto per una situazione strana emersa dopo un recente cambio di datacenter di Digital Ocean.
Quindi, avevamo tutti i nostri caricamenti archiviati in un bucket Digital Ocean Spaces, nel datacenter ams3.
Dopo due grossi problemi hardware e la conseguente interruzione del servizio in poco più di un mese, lo scorso weekend abbiamo deciso di spostare tutti i nostri file nel datacenter fra1.
Ecco i passaggi che ho seguito:
- In preparazione al trasferimento, ho caricato tutti i file presenti su ams3 (le 3 classiche cartelle originals, optimized e tombstone) nel nuovo bucket su fra1 utilizzando s3cmd.
- Sono andato nelle impostazioni del forum e ho impostato il nuovo endpoint per gli allegati, cdnl e il bucket di backup.
- Ho lanciato un completo “re-bake” dei post, aspettandomi che sistemasse tutto in un colpo solo.
Purtroppo non è stato così. La maggior parte degli allegati è stata “trasferita” correttamente, ma alcune centinaia no. Non è chiaro cosa sia successo, ma questi allegati mancanti sono stati spostati nella directory tombstone.
Pensavo che lanciare il task rake rake uploads:recover_from_tombstone avrebbe risolto il problema, ma non è stato così. I file vengono rilevati, ma alla fine del task nessun allegato viene recuperato e le immagini non sono ancora visibili nei post.
Ho iniziato a scavare un po’ più a fondo e ho scoperto che eseguendo UploadRecovery.new(dry_run: true).recover (trovato esplorando meta) nella console di rails mi forniva informazioni preziose, come l’URL del post nonché l’URL breve o lungo dell’immagine problematica.
Per gli URL restituiti nella forma breve, ho quindi scritto un po’ di codice Python per “tradurre” il nome breve del file caricato nella forma lunga, in modo da poter verificare la presenza del file nel bucket.
L’ho fatto e posso confermare che tutti i file mancanti sono lì, sia nel nuovo bucket che in quello vecchio. Parte dei caricamenti mancanti li ho trovati nella directory tombstone, come previsto, ma alcuni altri si trovano stranamente ancora nella directory original. I file non sono corrotti. Se vi accedo tramite URL si aprono correttamente in entrambi i datacenter, e se li scarico localmente sulla mia macchina Linux posso aprirli senza errori.
In qualche modo il processo di recupero dei caricamenti non riesce a individuarli e a sistemare ciò che è andato storto nel DB. ![]()
Quindi le mie domande sono:
- c’è un modo per capire perché, anche se i file caricati sono in
tombstone(o inoriginal), il task rake non riesce a recuperarli? - qual è la sequenza corretta di passaggi per garantire che, in caso di cambio di bucket o anche di transizione da DO a un altro ambiente compatibile con AWS, tutti gli allegati vengano spostati e preparati correttamente per lo scambio? Più in generale, cosa si dovrebbe fare, passo dopo passo, in questi casi? Chiaramente un semplice re-bake non è sufficiente.

- cosa fa il task
posts:invalidate_broken_images? Cioè, cosa significa invalidate?
Grazie in anticipo, sto lottando con questo problema da una settimana e ho davvero bisogno di risolverlo o diventerò pazzo
![]()
Per vostra informazione, il suggerimento di ricaricare a mano tutti gli 800+ allegati non è considerato una risposta valida. Deve esserci una ragione algoritmica… ![]()