Problemi con Migrate_from_s3

@zogstrip Ti dispiace rivedere questa PR dato che hai il contesto dalla recente revisione della mia precedente in quest’area? FIX: Make migrations from S3 more robust; fix bare URL migration by johnsonm · Pull Request #10093 · discourse/discourse · GitHub

Ho incluso le correzioni che ho apportato mentre eseguivo questa migrazione relativamente grande. Non ho cercato di aggiungere test per ogni correzione; non sono sicuro di come iniettare ogni forma di errore. Ma almeno la nuova funzionalità è testata.

@RGJ Penso che la mia PR, così com’è ora, possa gestire tutti i punti tranne i primi due, tranne che per quanto riguarda il CDN. Il mio sito utilizzava il CDN e ha migrato video con URL CDN, ma ciò potrebbe essere stato un effetto collaterale della denominazione con gli spazi di Discourse. Se hai casi aggiuntivi, spero che la mia PR ti fornisca una struttura semplice per aggiungere al regex e creare casi di test per le variazioni aggiuntive.

Credo che sia corretto migrare prima per post, perché dopo aver migrato gli upload in un post, quest’ultimo deve essere rigenerato (rebaked) affinché il post elaborato (cooked) contenga gli URL corretti. Dopo aver completato la migrazione dei miei post (che potrebbe richiedere meno di due settimane ora che ho modificato il limitatore di velocità per controllare direttamente la lunghezza della coda), mi occuperò di eventuali lavori residui da completare.

Poiché più post possono condividere riferimenti allo stesso contenuto se più di una persona carica lo stesso file, è necessario un secondo passaggio che controlli i dati elaborati (cooked) per gli URL vecchi e rigeneri quei post per acquisire la nuova posizione. Può utilizzare lo stesso limitatore di velocità per evitare di saturare le code.

Probabilmente non vedrò loghi rotti su makerforums perché abbiamo modificato il branding dopo aver smesso di inserire nuovo contenuto in “s3” (per noi, DigitalOcean Spaces), ma probabilmente vedrò molti upload ancora su S3, almeno per gli avatar. La migrazione di upload non associati a un post dovrebbe essere avviata solo dopo che tutti i post sono stati migrati, e probabilmente dovrò scriverne dopo aver completato la migrazione degli upload nei post.

@pfaffman Ho visto Bizarre Problems with migrate_from_s3 - #5 che descrive errori che non si sono ripetuti. Senza le mie correzioni nella PR corrente, gli errori vengono silenziosamente assorbiti, inclusi i fallimenti di convalida. Credo che il lavoro qui svolto affronti almeno alcuni dei problemi che hai riscontrato allora.

@hosna i problemi che hai sollevato in https://meta.discourse.org/t/what-does-rake-uploads-migrate-from-s3-exactly-do/97285 sono parzialmente o completamente risolti finora in questa PR. Se non sono completamente risolti, ho aggiunto test che renderanno più semplice aggiungere ulteriori test per convalidare correzioni aggiuntive.

@sam dato che hai applicato l’etichetta 2.6 alla PR, presumo che non verrà unita (merged) per almeno alcuni giorni; dovrei integrare nel PR il mio lavoro sul limitatore di velocità insieme alle correzioni? O preferisci tenere correzioni e lavoro sulle funzionalità in PR separate? Posso fare entrambe le cose. La funzionalità di limitazione della velocità funziona molto bene; sto migrando circa tre volte più velocemente, senza impatti sulla disponibilità del sito, ora che sto attendendo che la coda di Sidekiq si svuoti, quindi ha senso integrarla, penso, se è qualcosa che di solito viene accettato nelle PR. Altrimenti, devo attendere l’unione della PR su cui si basa il lavoro, quindi in entrambi i casi sarebbe utile ricevere un feedback.

..

Ho eliminato la duplicazione (DRYed) della mia patch per il limitatore di velocità della migrazione e l’ho integrata nella PR. Funziona nella pratica e sar mi dice che sto riscontrando quasi zero tempo di inattività continuo, mentre il sito continua a funzionare, durante la migrazione live. Un vantaggio della modalità batch è che posso controllare nuove versioni di Discourse dopo ogni batch completo di migrazioni; ho aggiornato il mio sito alla versione 2.6.0beta1 alla prima opportunità dopo il suo rilascio e ho eseguito con successo le migrazioni su 2.6.0beta1 con la mia PR di migrazione applicata sopra dall’aggiornamento.

Credo che la PR sia ora pronta per la revisione; intendo presentare un’altra PR per le ultime fasi, ma ottenere questa in posizione migliorerà l’esperienza generale di migrazione per tutti, anche prima che io completi gli ultimi pezzi.

5 Mi Piace