Importa errore "Failed to map post"

Ho circa 1000 post che falliscono durante l’importazione, con, credo, l’errore principale che è “Failed to map post”, come ad esempio

Failed to map post for b9ec0145-e587-c0e2-768d-ad482c3ab928@mmtaylor.net
undefined method `hex’ for nil:NilClass

questo sembra causare il fallimento di molti altri post con messaggi di errore come,

1109 / 65895 ( 1.7%) [400 items/min] Parent message b9ec0145-e587-c0e2-768d-ad482c3ab928@mmtaylor.net doesn’t exist. Skipping CAKPLMstp+CaTyfFinM-dHHpVxNHt0fy2vXT9Fx+21mE2RT-ijg@mail.gmail.com: A PCT approach to the “Power Law”

Hai qualche suggerimento su come risolvere questo problema?

Ho 28 anni di post, con una cartella per ogni anno e un file mbox per ogni mese. Ci sono 66909 messaggi negli mbox. L’importazione ne mostra 65895. La differenza di 1014 è dovuta ai fallimenti indicati nell’output dell’importazione?

I post sono stati convertiti da Eudora mbx a mbox standard con Aid4Mail.

Per l’errore “Parent message doesn’t exist” ne vedo 421 casi.
Per l’errore “Failed to map post” ne vedo 149 casi.

Il mio split_regex è “^From .@. [0-9]{4}” che sembra adatto per intestazioni come,

From mmt-xxx@somedomain.net Wed Aug 10 12:06:53 2016

Aiuto! Avete qualche suggerimento per questo? :woozy_face:

Ho visto lo stesso errore la settimana scorsa mentre lavoravo a un problema diverso. Lo risolverò questa settimana e pubblicherò un aggiornamento qui non appena sarà sistemato.

Si tratta solo di avvisi e probabilmente compaiono a causa degli errori “Impossibile mappare il post”. Succede quando un messaggio fa riferimento a un post che non esiste. Sono quasi certo che correggendo l’altro problema si risolveranno la maggior parte, se non tutti, di questi avvisi.

Quell’errore dovrebbe essere risolto da FIX: Email attachments with a size of 0 bytes caused error · discourse/discourse@e84d88d · GitHub

Ho aggiornato, ricostruito l’importazione, verificato che receiver.rb fosse stato aggiornato e rieseguito l’importazione.

Questo sembra aver risolto diverse centinaia di messaggi, grazie.

Rimangono comunque circa 200 fallimenti, dovuti a un paio di tipi di errori:

Mancanza della data. Salto bbe76bf7a9cab5a2ec2a06e6ef453555

Impossibile mappare il post per 23a86e52-71ba-7435-1c9c-c4f2a134b90d@mmtaylor.net
Discourse::InvalidAccess

Inoltre, ci sono molti messaggi “Il genitore non esiste”, che presumo siano conseguenza dei precedenti.

Hai idea di cosa causi questi errori? Nel primo caso ho esaminato il messaggio mbx e non vedo alcuna data mancante.

Potresti dare un’occhiata al file index.db creato dallo script di importazione. Si tratta di un database SQLite3. Puoi eseguire la seguente query per vedere con quali dati sta lavorando il parser. Seleziona i messaggi per i due Message-ID che hai pubblicato.

SELECT *
FROM email
WHERE msg_id IN ('bbe76bf7a9cab5a2ec2a06e6ef453555', '23a86e52-71ba-7435-1c9c-c4f2a134b90d@mmtaylor.net')

Immagino che le colonne email_date e raw_message siano quelle più interessanti per te. Forse puoi scoprire cosa sta confondendo il parser delle email…

Per il primo, la data è null e vedo che non c’è data per quel messaggio nell’mbx. Ho notato che la risposta (con :Re) appare prima del messaggio “iniziale”, motivo per cui pensavo che la data non mancasse. L’importazione considera i messaggi padre come i primi nel file con quello stesso oggetto?

La data dell’email viene presa dalla riga “Date:”, ad esempio?

Date: Wed, 25 Mar 1992 12:23:00 GMT

Vedrò se riesco a riparare quelli con date mancanti.

Per il secondo, non vedo nulla di palesemente sbagliato. Questa immagine fornisce qualche indizio sul problema?

No, utilizza le intestazioni In-Reply-To e References per abbinare e ordinare in base a Message-ID, a meno che non abbia modificato l’impostazione group_messages_by_subject dell’importatore su true.

Sì.

La mia migliore ipotesi è che ci sia un problema con uno degli allegati. Forse l’estensione del file non è consentita?

Ho effettivamente impostato la configurazione group_messages_by_subject su true, poiché senza di essa non c’era alcun raggruppamento.

Quel messaggio contiene due immagini inline:

Content-Type: application/octet-stream;
name=“Conflict (was … long live Wil”
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=“Conflict (was … long live Wil”

Content-Type: image/jpeg; name=“2.1.3FarmerSideEffectLoop.jpg”
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=“2.1.3FarmerSideEffectLoop.jpg”

Potrebbe essere che il primo nome file non abbia un’estensione?

Potrei risolvere il problema della data inserendola in index.db, invece di smanettare con il file mbx?

Sì, funziona. Ho fatto lo stesso in passato. Ti consiglio di impostare index_only su true in settings.yml, in modo che non inizi l’importazione immediatamente dopo l’indicizzazione dei messaggi. Puoi apportare tutte le modifiche necessarie al database una volta terminata l’indicizzazione. Quindi, reimposta index_only su false e riavvia l’importazione.

Penso di aver frainteso qualcosa. L’indicizzazione non è già stata completata, dato che index.db è già stato creato?

Ho trasferito index.db sul mio desktop. Pensavo di aggiornare le date, poi riportare index.db sul server ed eseguire di nuovo l’importazione. Non è corretto?

Ho deciso di procedere modificando i file mbox, aggiungendo una riga “Date”, ad esempio “Date: Wed, 25 Mar 1992 17:43:06”. Ho trasferito i file aggiornati e rieseguito l’importazione, due volte. Tuttavia, il campo email_date non è stato aggiornato.

Devo eliminare index.db?

Sì, devi eliminarlo.