Immagini rotte e i relativi URL S3

Dopo l’aggiornamento recente a 2.5.0.beta7, tutte le mie immagini sul forum non sono più visualizzabili.
image

Anche l’avatar è stato sostituito con quello predefinito. Ecco le mie impostazioni nella dashboard:

I miei post dello staff per le risorse:

Un esempio di immagine: /original/2X/4/4064b1cc32199de63ad2fa2b5bd2a0c5b6872c6d.png

Tuttavia, il mio S3 non contiene questa immagine: (perché è successo?)

Il mio favicon e altri loghi mancano: /original/1X/b32666bfe0e0eac40aacb178c7430c9f7873b397.png

Tuttavia, il mio S3 contiene solo questi file:

Notate come l’URL sia errato e non esista alcuna cartella 1X all’interno della cartella original.

Ho provato a seguire il tutorial di questo post:

Ma non ha risolto nulla.

Posso far notare che questa immagine non è nel tuo bucket, è 4061…41.png? :thinking:
È presente in locale?

Mi scuso, ho scelto le parole sbagliate. Volevo dire che ho notato che non si trova nel bucket S3, nessuno di loro lo è.

Come posso controllarlo localmente?

Oh, ha davvero più senso :sweat_smile:
Puoi verificare localmente con qualsiasi client SSH preferisci; a seconda della tua configurazione, i file dovrebbero trovarsi in qualcosa come /var/discourse/shared/standalone/uploads/default/original/2X/
quindi potresti usare ls -R /var/discourse/shared/standalone/uploads/ | grep 4064b per trovare il file 4064b…d.png

Parlo della stessa istanza di Discourse di @masterakay.

Abbiamo migrato su S3 oltre due anni fa; nessuno dei file nella cartella locale degli upload è più recente del 2018.

Per quanto ne so, le immagini vengono caricate nella cartella “original”, elaborate (ritagliate, ridimensionate, ecc.) e spostate nella cartella “optimized”. Gli URL utilizzati da Discourse durante il caricamento delle immagini provengono ancora dalla cartella “/original/1X/”. In qualche modo, con l’aggiornamento, la cartella “1X” è scomparsa.

Esiste una cartella “default” che contiene molti file caricati (immagini, ecc.) nonché versioni ritagliate. Ci sono circa 10.000 file qui, per un totale di circa 2,5 GB.

Il problema è che l’URL dell’immagine nei post fa sempre riferimento a quello “originale”.
Abbiamo notato che i file mancanti sono un sottoinsieme dei file presenti nella cartella “default”.
I nuovi caricamenti funzionano senza problemi e vengono archiviati in “/original/2X/”.

Qualcuno ha idee su dove possa essere finita la cartella “/original/1X/” e se sia possibile ripristinarla?

@sam @codinghorror Mi dispiace molto coinvolgervi in questo, ma è piuttosto urgente. Siamo studenti e ci sentiamo un po’ impotenti di fronte alla pressione dell’università che ci chiede di risolvere il problema delle immagini.

Anche io lo vedo, ed è iniziato proprio dopo un aggiornamento più recente.

https://discourse.sesp.northwestern.edu

Come hai configurato S3? Hai impostato dei valori in app.yml o solo nell’interfaccia di amministrazione? Sembra che ci sia qualcosa di inaspettato per DISCOURSE_S3_BUCKET o DISCOURSE_S3_BACKUP_BUCKET.

Sì, come ho spiegato, tutto era funzionante fino all’ultimo aggiornamento. Abbiamo seguito tutti i passaggi.
In particolare, abbiamo fatto qualcosa del genere:

Per quanto riguarda questi valori, non riesco a trovare alcuna variabile impostata in app.yml. In precedenza non era richiesto. È cambiato qualcosa?

Esatto. Potrebbe esserci qualcosa che non funziona correttamente nel codice, ma non sappiamo cosa né perché. Quindi abbiamo bisogno di ulteriori informazioni.

Esistono due modi diversi per configurare S3: puoi impostare l’ambiente nel file app.yml oppure inserire i valori nell’interfaccia di amministrazione. Le variabili hanno nomi leggermente diversi in ciascun caso.

L’argomento a cui hai fatto riferimento descrive come configurare tramite l’interfaccia di amministrazione. Se è così che hai impostato il tuo sito, puoi dirci quali valori hai per s3_upload_bucket e s3_backup_bucket?

@schleifer Lo stesso per me. Non ho modificato nulla in quelle impostazioni, né io. Ho anche verificato che le mie credenziali AWS funzionino.

Ah, ora è chiaro.

Il problema si è verificato perché quelle impostazioni non dovrebbero avere lo stesso valore: cerca nell’argomento di configurazione la riga “Devo davvero usare bucket separati per gli upload e i backup?”.
Un lavoro di manutenzione è stato eseguito sui contenuti del bucket dei backup e ha interessato gli upload perché i loro valori si sovrapponevano.

@sam dovremmo probabilmente imporre questo nel codice, non solo nella documentazione.

Per sistemare il tuo sito, ci sono due passaggi:

Per prima cosa, dovrai modificare il prefisso dei backup: aggiungere /backups alla fine, come descritto nell’argomento di configurazione, è sufficiente.

Successivamente, sposta tutto nel bucket S3 nella posizione corretta. Tutto ciò che si trova nella cartella superiore “default” dovrebbe essere riportato al livello superiore.
Ad esempio, è probabile che ci sia una cartella “default/originals” che dovrebbe essere spostata verso l’alto.

Dovrai utilizzare la console web di AWS o un altro strumento per esplorare il bucket.

Va bene, grazie mille! Proverò a seguire i passaggi e tornerò qui nel caso succeda qualcosa. Hai idea del perché sia successo tutto d’un tratto? :sweat_smile:

Ciao @schleifer, ha senso e ho aggiunto il prefisso “backups” al nome del bucket.

Per quanto riguarda i caricamenti esistenti, tutti i file si trovano in /default/ (non in sottocartelle). Gli URL delle immagini nei post (e ovunque altro) utilizzano /original/* o /optimized/*.

Se spostiamo tutto ciò che è nella cartella default di un livello verso l’alto (fino alla radice), le immagini si troveranno in /*.
E no, non ci sono cartelle all’interno di defaults, solo file caricati. Sembra che contenga file con nomi standard a 40 caratteri (hash) e alcuni con suffissi come “_2_10x10” (che presumo provengano dall’ottimizzazione).

Come suggerisci di risolvere la situazione? Correggere tutti i post con nuovi link richiederà del tempo. È possibile raggruppare in qualche modo i file nelle cartelle corrette in base a questo nome file?

@schleifer ci sono aggiornamenti a riguardo?

Questo è… inaspettato. Dovremo quindi sistemare a mano una serie di cose.

La domanda più importante è: “i nuovi caricamenti stanno andando nella posizione corretta?”

Assumendo che sia così, puoi spostare i vecchi caricamenti in una posizione nota e aggiornare la loro voce nel database. Quanti file ci sono in /default/?

Per fortuna, i nuovi caricamenti funzionano come previsto nelle sottocartelle. Inoltre, i link nei post puntano alla posizione corretta.

Ci sono >10k file in /default/. Modificare manualmente ogni post sembra un lavoro enorme. Esiste un modo per automatizzare questo processo? Magari con una sostituzione tramite regex su tutti i post?

Sì, è previsto. La prossima cosa da fare è mettere tutti i file AWOL in una posizione nota. Nel bucket, quali sottodirectory ci sono sotto /original/? Dovrebbe esserci /1X/ e potrebbero essercene altre.

Questa è la struttura completa delle cartelle. I nuovi caricamenti (che funzionano correttamente) vengono salvati in /original/2X/*/.jpg

/
|---backups
    |---default
        |---(una serie di file di backup .tar.gz)
|---default
    |---(10719 file caricati: pdf, immagini, ecc.)
|---inventory
    |---1/pesuioforum/{optimized,original}/[DATE]/manifest.{checksum,json}
|---optimized
    |---1X
        |---(2 file)
    |---2X
        |---{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}
            |---(file caricati che iniziano con il carattere della cartella sopra indicato) (1055 file in totale)
|---original
    |---2X
        |---(Stesso contenuto di optimized/2X, 520 file)
|---tombstone
    |---optimized
        |---1X
            |---(2 file)
    |---original
        |---2X
            |---(Stesso contenuto di optimized/2X, 1 file)

La prossima cosa da fare è spostare tutti i file AWOL in una posizione nota.

La cartella /default/ sembra già contenere tutte le immagini.