Durante l’importazione di mbxs ricevo un errore che indica che il messaggio genitore non esiste, anche se sembra essere presente nel database, index.db.
Ecco l’errore:
Il messaggio genitore 9205270657.AB03850@ben.dciem.dnd.ca non esiste. Si salta 9206031720.AA22567@ben.dciem.dnd.ca: A CALL FOR HELP
Ecco la voce nel database:
Hai qualche suggerimento sul motivo per cui questo fallisce?
Forse l’ordine di ordinamento è errato perché stai raggruppando le email per oggetto? Potrebbe valere la pena indagare. I messaggi vengono ordinati solo in base a Subject e all’ordine delle email nel file mbox.
Sei davvero sicuro di dover raggruppare le email per oggetto? A giudicare dallo screenshot, sembra che le email abbiano anche gli header Message-ID, In-Reply-To e References corretti.
Grazie. Guardando la tabella email_order, sembrano essere nell’ordine corretto:
msg_id
rowid
9205270657.AB03850@ben.dciem.dnd.ca
874
9206031720.AA22567@ben.dciem.dnd.ca
875
Potrebbe esserci qualcos’altro che impedisce l’importazione di questi messaggi genitori?
Quando ho eseguito la prima importazione, sembrava non esserci alcun raggruppamento. Credo che il problema sia che le risposte sono indirizzate alla mailing list piuttosto che all’originatore. Inoltre, alcuni messaggi non hanno affatto questi campi, poiché l’archivio è stato assemblato manualmente nel corso di 28 anni in modo piuttosto disordinato, con diverse versioni di Eudora.
Forse non riesce a importare il messaggio genitore? Si è verificato un errore? È difficile capire perché non riesca a trovare il messaggio. Mi dispiace, ma immagino che dovrai eseguire il debug da solo modificando il codice Ruby dello script di importazione.
Questi stampano correttamente e suggeriscono che il messaggio padre è stato mappato (importato?)
873 / 65936 ( 1.3%) [3895 items/min]
Mapping parent 9205270657.AB03850@ben.dciem.dnd.ca A CALL FOR HELP
Mapped message 9205270657.AB03850@ben.dciem.dnd.ca A CALL FOR HELP
874 / 65936 ( 1.3%) [3900 items/min]
Parent message 9205270657.AB03850@ben.dciem.dnd.ca doesn’t exist. Skipping 9206031720.AA22567@ben.dciem.dnd.ca: A CALL FOR HELP
Quindi, non capisco perché il messaggio padre risulti vuoto in map_reply. L’unica cosa che noto è che i numeri (873/874) sono uno in meno rispetto al rowid sopra.
Ma non credo di poter procedere oltre, poiché non so cosa stia facendo @lookup.topic_lookup_from_imported_post_id e modificare con vi e rieseguire l’importazione è molto laborioso, con ogni ciclo che richiede circa 30 minuti.
Si trova in base.rb nella stessa directory. Sta facendo esattamente ciò che suggerisce il nome della funzione: cerca il topic_id trovando l’import_id (che presumo sia l’ID del messaggio in questo caso) in un campo personalizzato del topic (o forse in un campo personalizzato del post?).
È meglio di quelli che richiedono una settimana. (A volte puoi fare in modo che lo script di importazione importi solo ciò che stai cercando di debuggare; capire come farlo è lasciato come esercizio al lettore.)
Puoi provare a consultare il database e verificare se il messaggio genitore viene importato e se ha un campo personalizzato topic/post import_id.
Con ‘database’ intendi index.db? Con ‘importato’ intendi inserito nella tabella email di index.db? Sì, è lì. Ma non c’è nessuna colonna chiamata ‘import_id’.
Ho importato il plugin Data Explorer e ho esaminato il database di Discourse. Ho scoperto che l’import_id del messaggio genitore era presente nelle tabelle topic_custom_field e post_custom_field. Inoltre, il messaggio esisteva.
Tuttavia, era stato eliminato. Quindi, immagino di aver ricevuto l’errore “il messaggio genitore non esiste” perché l’importazione stava cercando nel database di Discourse invece che in index.db. Sarebbe stato utile ricevere un messaggio di errore che indicasse che il post era stato eliminato.
Comunque, credo che questo sia accaduto perché, durante un test iniziale, avevo eliminato il primo lotto (piccolo) di post importati. Pensavo di aver ripristinato lo stato precedente a quel punto, ma chiaramente non è stato così.
La cosa positiva è che questo problema riguarda solo il mio server di test e non dovrei incontrarlo durante l’importazione sul server live.