Некоторые связанные изображения не отображаются или показываются как битые

Я мигрирую большой объем контента — около 15 тысяч новостных статей — в Discourse через API. В этих темах есть ссылки на изображения. Изображения были загружены в облачное хранилище (blob storage) и доступны публично.

В большинстве тем изображения отображаются корректно: они скачиваются по прямой ссылке и загружаются в Discourse, как и ожидалось. Однако некоторые либо остаются просто ссылками в теме, либо, по какой-то причине, отображаются как битые изображения.

Например:

Остаются просто ссылками:

Отображаются как битые:

В случае с битыми изображениями при редактировании тема выглядит так:

Конфигурация:

  • Чистая установка Discourse, только для тестирования миграции
  • Хранение изображений в S3

Проблем не возникает, когда я создаю посты вручную как пользователь и загружаю изображения. Проблема проявляется только при миграции постов через API, то есть массово и в быстром темпе (использую параметр skip_validations=true). На данный момент я мигрировал максимум 1000 тем, после чего очищал базу и начинал заново.

Есть ли идеи, что может вызывать эту проблему? Или какие-либо советы по диагностике? Все фоновые задания Hotlink в Sidekiq, похоже, планируются и выполняются корректно.

rake posts:rebake не помогает.

Как насчет опции пересборки HTML с маленьким гаечным ключом администратора?

image

У вашего файла двойное расширение — .jpeg.jpg. Это относится ко всем отклонённым файлам?

Были ли какие-либо файлы с двойным расширением успешно обработаны?

Спасибо, Роберт. Это работает для первых нескольких, которые я попробовал. Всё возвращается к началу, то есть к отображению изображения по прямой ссылке, а затем к его скачиванию и загрузке.

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

Нет, изображения с двойным расширением составляют меньшинство и не являются причиной всех сбоев. Однако опция «Перестроить HTML» исправляет и эти случаи.

Это fantastic и поздравляю! :partying_face: К счастью, я узнал это от других полезных людей здесь, когда сталкивался с похожими проблемами, и я рад, что смог передать это вам. :sunglasses:

Хорошо, я исправил все перенесённые сообщения через API, используя /posts/{num}/rebake. Странно, что команда rake posts:rebake в контейнере не сработала.

После автоматизации вызова API для перепроверки оказалось, что процент неудач при загрузке изображений составляет около 80%. Это довольно странно.

В итоге это оказалось ненадежным: работало для нескольких постов, но не для всех. Мне придется снова попытаться загрузить изображения. Ранее у меня возникали проблемы с этим — запросы просто зависали. Не уверен, пробовал ли я тогда параметр skip_validations в этих запросах.

В этом сообщении есть несколько советов, которые могут помочь исправить битые изображения: Rebake with rails command or rake task doesn't work, but rebuilding HTML does. Why? - #12 by RGJ.