Importar error "Failed to map post"

Tengo aproximadamente 1000 publicaciones que fallan en una importación y, creo, el error principal es “Failed to map post” (Error al mapear la publicación), como en:

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

Esto parece causar que muchas otras publicaciones fallen con mensajes de error como:

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”

¿Alguna sugerencia sobre cómo resolver esto?

Tengo 28 años de publicaciones, con una carpeta para cada año y un archivo mbox para cada mes. Hay 66909 mensajes en los archivos mbox. La importación muestra 65895. ¿Se debe la diferencia de 1014 a los fallos indicados en la salida de la importación?

Las publicaciones se convirtieron de archivos mbx de Eudora a archivos mbox estándar con Aid4Mail.

Para el error “Parent message doesn’t exist” (El mensaje principal no existe) veo 421 instancias.
Para el error “Failed to map post” (Error al mapear la publicación) veo 149 instancias.

Mi expresión regular de división (split_regex) es “^From .@. [0-9]{4}”, que parece adecuada para encabezados como:

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

3 Me gusta

¡Ayuda! ¿Alguna sugerencia para esto? :woozy_face:

Vi el mismo error la semana pasada mientras trabajaba en un problema diferente. Voy a solucionarlo esta semana y publicaré una actualización aquí una vez que esté arreglado.

Esos son solo advertencias y probablemente aparecen debido a los errores de “No se pudo mapear la publicación”. Ocurre cuando un mensaje hace referencia a una publicación que no existe. Estoy bastante seguro de que solucionar el otro problema arreglará la mayoría, si no todas, de estas advertencias.

5 Me gusta

Ese error debería estar corregido por FIX: Email attachments with a size of 0 bytes caused error · discourse/discourse@e84d88d · GitHub

3 Me gusta

He actualizado, reconstruido la importación, verificado que receiver.rb se haya actualizado y vuelto a ejecutar la importación.

Eso pareció resolver varios cientos de mensajes, gracias.

Aún tengo alrededor de 200 fallando, sin embargo, debido a un par de tipos de errores:

Falta la fecha. Saltando bbe76bf7a9cab5a2ec2a06e6ef453555

Error al mapear el post para 23a86e52-71ba-7435-1c9c-c4f2a134b90d@mmtaylor.net
Discourse::InvalidAccess

Luego hay muchos mensajes de “El padre no existe”, que presumiblemente son resultado de lo anterior.

¿Alguna idea de qué se deben estos errores? En el primero he revisado el mensaje mbx y no veo que falte la fecha.

Puedes echar un vistazo a index.db, el archivo que crea el script de importación. Es una base de datos SQLite3. Puedes ejecutar la siguiente consulta para ver con qué está trabajando el analizador. Selecciona los mensajes de los dos Message-ID que publicaste.

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

Supongo que las columnas email_date y raw_message serán las más interesantes para ti. Quizás puedas encontrar qué está confundiendo al analizador de correos…

1 me gusta

Para el primero, la fecha es nula y veo que no hay fecha para ese mensaje en el mbx. Observo que la respuesta (con :Re) aparece antes del mensaje “inicial”, por lo que pensé que la fecha no estaba ausente. ¿La importación toma los mensajes padres como los primeros en el archivo con ese asunto?

¿La fecha del correo se toma de la línea “Date:”, como en este ejemplo?

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

Voy a ver si puedo reparar aquellos con fechas faltantes.

Para el segundo, no veo nada obviamente incorrecto. ¿Da esta imagen alguna pista sobre el problema?

No, utiliza las cabeceras In-Reply-To y References para emparejar y ordenar por Message-ID, a menos que hayas cambiado la configuración group_messages_by_subject del importador a true.

Sí.

Mi mejor suposición es que hay un problema con uno de los archivos adjuntos. ¿Quizás la extensión del archivo no está permitida?

1 me gusta

Sí, configuré la opción group_messages_by_subject a true, ya que sin ella no había ningún agrupamiento.

Ese mensaje tiene dos imágenes en línea:

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”

¿Podría ser que el primer nombre de archivo no tenga extensión?

1 me gusta

¿Podría resolver el problema de la fecha insertando la fecha en index.db, en lugar de meterme con el archivo mbx?

1 me gusta

Sí, eso funciona. Yo hice lo mismo en el pasado. Te recomiendo establecer index_only en true en settings.yml, para que no comience a importar inmediatamente después de indexar los mensajes. Puedes realizar todos los cambios necesarios en la base de datos una vez que la indexación haya finalizado. Luego, cambia index_only a false nuevamente y reinicia la importación.

Creo que estoy malinterpretando algo. ¿Acaso la indexación no ya se ha realizado, dado que index.db ya está construido?

He transferido index.db a mi escritorio. Pensaba actualizar las fechas, luego transferir index.db de nuevo al servidor y ejecutar la importación otra vez. ¿Eso no es correcto?

Decidí optar por editar los archivos mbox, agregando una línea “Date”, por ejemplo: “Date: Wed, 25 Mar 1992 17:43:06”. Transferí los archivos actualizados y ejecuté la importación de nuevo, dos veces. Sin embargo, el campo email_date no se actualizó.

¿Necesito eliminar index.db?

Sí, necesitas eliminarlo.

1 me gusta