Ошибки импорта в Yahoo Groups

Работаю над импортом mbox из Yahoo Groups и сталкиваюсь с ошибками. Не совсем понимаю, в каком направлении двигаться дальше для отладки и импорта. Вот ошибки, которые я пока вижу:
https://pastebin.com/raw/2WTN3GTj

Вы используете скрипт mbox, верно? У меня всё сработало отлично, без ошибок. Вложения отсутствуют, но в моём случае это не критично.

Это верно, @tobiaseigen. Импорт длился более 2 часов.

В дополнение к последнему вопросу, я хотел уточнить: не был уверен, стоит ли продолжать импорт, несмотря на эти сбои. Интересно, можно ли после исправления ошибок/сбоев просто запустить импорт снова — система пропустит уже импортированные сообщения и продолжит корректный импорт.

@gerhard, возможно, нам нужна здесь какая-то информация и помощь… Даже после изучения вашего руководства Sidekiq не отображает обработку этих ~35 000 сообщений.

Не уверен, что Sidekiq здесь имеет значение — скрипт импорта, кажется, работает вне Discourse.

На всякий случай, если это поможет, вот мой лог импорта. На самом деле есть несколько строк, похожих на ваши, но я просто решил не беспокоиться об этом. Жизнь слишком коротка.

Поскольку у вас так много ошибок, похоже, у вас более системная проблема. Вы уверены, что у системы достаточно оперативной памяти? Не знаю, пробовали ли вы уже, но, возможно, стоит внимательнее изучить файл импорта и попытаться выяснить, есть ли что-то, что можно найти — может быть, вам просто нужно как-то настроить split_regex или загрузить файл на сервер в другом формате?

Если проблемы продолжатся, вы можете попросить помощи в канале Marketplace — здесь есть несколько консультантов, которые очень опытны в выполнении импортов. Я, конечно, не эксперт — это была моя первая попытка. :wink:

root@discourse:/var/discourse# ./launcher enter import
root@discourse-import:/var/www/discourse# RAILS_DB=secondsite
root@discourse-import:/var/www/discourse# export RAILS_DB
root@discourse-import:/var/www/discourse# import_mbox.sh
Импорт mbox начинается...

Загрузка существующих групп...
Загрузка существующих пользователей...
Загрузка существующих категорий...
Загрузка существующих постов...
Загрузка существующих тем...

создание индекса
индексирование файлов в /shared/import/data/list
индексирование /shared/import/data/list/18929486-3.mbox
индексирование /shared/import/data/list/18929486-2.mbox

индексирование ответов и пользователей

создание категорий
        1 / 1 (100.0%)  [4916421 элементов/мин]  
создание пользователей
       69 / 69 (100.0%)  [1178 элементов/мин]  ]  
создание тем и постов
Дата отсутствует. Пропуск 0462b41b966d8c11e6e32cc14c0b576d
        1 / 2333 (  0.0%)  [179689 элементов/мин]  Дата отсутствует. Пропуск 0adb9bd80082595a33130f7749d7f530
        2 / 2333 (  0.1%)  [224693 элементов/мин]  Дата отсутствует. Пропуск 3bd86d7adb396fbeb7d6dfcfe9f0be5f
        3 / 2333 (  0.1%)  [283328 элементов/мин]  Дата отсутствует. Пропуск 4f5397838e6c7f96eedfe116ce27be13
        4 / 2333 (  0.2%)  [184374 элементов/мин]  Дата отсутствует. Пропуск c8c14ab80e92ae1cacd4af99351319bd
       45 / 2333 (  1.9%)  [334 элементов/мин]  Не удалось сопоставить пост для 2f401ce90708241252h30bdae5iad2ae0096e067b71@mail.gmail.com
undefined method `hex' for nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:145:in `map_first_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:103:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `<module:Mbox>'
script/import_scripts/mbox.rb:10:in `<module:ImportScripts>'
script/import_scripts/mbox.rb:9:in `<main>'
      940 / 2333 ( 40.3%)  [398 элементов/мин]  Не удалось сопоставить пост для BBCAF42471FF9540868B4DC02B885B1BBCDA1F@wn1217.or.providence.org
undefined method `hex' for nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:159:in `map_reply'
/var/www/discourse/script/import_scripts/mbox/importer.rb:105:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `<module:Mbox>'
script/import_scripts/mbox.rb:10:in `<module:ImportScripts>'
script/import_scripts/mbox.rb:9:in `<main>'
      944 / 2333 ( 40.5%)  [399 элементов/мин]  Не удалось сопоставить пост для 3A1D6C799D451B41BD0500303339622A023AA1@s-mail.integral-corp.com
undefined method `hex' for nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:159:in `map_reply'
/var/www/discourse/script/import_scripts/mbox/importer.rb:105:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `<module:Mbox>'
script/import_scripts/mbox.rb:10:in `<module:ImportScripts>'
script/import_scripts/mbox.rb:9:in `<main>'
     1149 / 2333 ( 49.2%)  [408 элементов/мин]  Не удалось сопоставить пост для FF35EE5B30156244A4370DC859B7F650F50626@s-mail.integral-corp.com
undefined method `hex' for nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:159:in `map_reply'
/var/www/discourse/script/import_scripts/mbox/importer.rb:105:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `<module:Mbox>'
script/import_scripts/mbox.rb:10:in `<module:ImportScripts>'
script/import_scripts/mbox.rb:9:in `<main>'
     2328 / 2333 ( 99.8%)  [467 элементов/мин]  

Обновление статуса тем

Обновление bumped_at для тем

Обновление last posted at для пользователей

Обновление last seen at для пользователей

Обновление количества ответов в темах...
       70 / 70 (100.0%)  [10745 элементов/мин]    
Обновление first_post_created_at...

Обновление user post_count...

Обновление user topic_count...

Обновление пользователей тем

Обновление таймингов постов

Обновление пользователей избранных тем

Обновление избранных тем в категориях
        9 / 9 (100.0%)  [2505 элементов/мин]  n]  
Обновление количества ответов в темах для пользователей
       70 / 70 (100.0%)  [9174 элементов/мин]   ]  
Сброс счетчиков тем


Готово (00ч 06мин 58сек)

Итак, я позволил процессу продолжиться (разберусь с ошибками позже), но теперь столкнулся с довольно необычной ситуацией. Я попытался импортировать эти данные в папку с именем «old-yahoo-group», предварительно создав в системе соответствующую КАТЕГОРИЮ, а затем переместил все mbox-папки в следующую директорию:

/var/discourse/shared/standalone/import/data/old-yahoo-group

Мне казалось, что я правильно понял инструкции: после импорта сообщения должны были отобразиться в соответствующей категории, однако они все скрыты в системе.

Я могу выполнить поиск и найти старые сообщения без проблем, но они не отображаются ни в одном сводном разделе.

Как можно настроить этот последний импорт так, чтобы все сообщения (около 35 тысяч) попали в заданную категорию и отображались в удобном разделе, указывающем, что это старые сообщения?

При дальнейшем изучении я, кажется, выяснил, что произошло:

Теперь мне нужно понять, как исправить сложившуюся ситуацию…

Вот что сработало идеально (при условии, что категория old-yahoo-group уже была создана, не существовало других постов без категории, и она фактически была отключена в настройках):

/var/discourse/launcher enter app
rails c
un=Category.find_by_slug('uncategorized')
newcat=Category.find_by_slug('old-yahoo-group')
Topic.where(category_id: un.id).update_all(category_id: newcat.id)

Кстати, у меня был похожий опыт. По какой-то причине скрипт импорта проигнорировал созданную мной категорию, хотя slug совпадал. Однако он создал новую категорию, так что у меня не возникло проблем. Я просто удалил созданную мной категорию и переименовал категорию, созданную скриптом.