Ошибка 500 во входящих сообщениях пользователя

Это вызывается только для безопасных загрузок. Я предполагаю, что раньше у вас это было настроено, а теперь вы это убрали.

Что это возвращает?

./launcher enter app
rails c
> Upload.where('secure').count

cc @martin

(Также у нас есть ошибка в именовании в site_setting.rb:157:in absolute_base_url. Метод должен называться s3_absolute_base_url)

Привет, Сэм,

большое спасибо, что уделили этому внимание!

Насколько я знаю, мы не активировали функцию защищенной загрузки. Но поскольку я не единственный администратор, я не могу быть в этом уверен. И если я правильно понимаю, ваш запрос должен возвращать 0, если функция никогда не активировалась? Ну, это гораздо больше нуля :wink: На самом деле 235 :blush:

Это возвращает:

[1] pry(main)> Upload.where('secure').count
=> 235
[2] pry(main)> 

Есть ли что-то, что я могу сделать, чтобы это исправить?

Стоит ли мне отключить настройку seucure media allow embeded images in emails?

Стоит ли попробовать активировать secure media, а затем снова отключить её?

Огромное спасибо за помощь в этом вопросе!

Если у вас в данный момент не включена функция защищённых медиа, включать её не нужно. Она должна была быть включена на каком-то этапе, судя по количеству ваших защищённых загрузок. Попробуйте запустить rake-задачу uploads:secure_upload_analyse_and_update; она проанализирует все ваши загрузки и отметит их как защищённые или незащищённые в зависимости от настроек сайта (если у вас отключены защищённые медиа, все они будут помечены как незащищённые).

Привет, Мартин,

большое спасибо. Я попробую это сегодня вечером.

Просто чтобы уточнить. У нас в данный момент включена опция:

Нам тоже нужно переключить эту опцию? Или это не влияет на процесс маркировки?

И просто для ясности: после выполнения команды rake мне нужно пересобрать приложение? Или это не обязательно, но, возможно, рекомендуется?

Огромное спасибо!

Эта опция включена по умолчанию, но она не работает, пока не включена функция Secure Media.

Я не думаю, что пересборка необходима. Я запускал это на рабочих сайтах без каких-либо проблем.

Спасибо большое!

Я попробую и отчитаюсь завтра.

СПАСИБО СПАСИБО!

Предположительно, трассировка стека указывает на то, что система пытается сериализовать список сообщений или информацию из них, но терпит неудачу при сериализации конкретного изображения. Вероятно, это изображение профиля пользователя. Затронут только один аккаунт, поэтому, возможно, проблемное изображение относится к пользователю, который общался только с этим затронутым аккаунтом.

Возможно, неудачная попытка построения списка касается последних N сообщений. Может быть, вы могли бы отправить N сообщений (с разными названиями тем) пострадавшему аккаунту, чтобы список содержал только корректные сообщения?

Марти, ещё раз спасибо за подсказку.

Я попытался запустить rake uploads:secure_upload_analyse_and_update, но получил следующий вывод:

Эта задача работает только для внешнего хранилища.

Поэтому я попытался активировать опцию «Активировать защищённые медиа». Но, к сожалению, или, скажем так, во избежание ошибок администратора, эту опцию можно активировать только при настройке корзин Amazon S3. И я абсолютно уверен, что никто никогда не настраивал S3.

Таким образом, я не могу запустить rake-скрипт, поскольку у меня нет доступа к хранилищу S3. Поэтому я не могу сказать, повлияет ли это на pry(main)> Upload.where('secure').count.

Меня удивляет, почему у нас всё ещё есть защищённые загрузки, если у нас никогда не был активирован S3?

Есть ли какие-то подсказки по этому поводу?

Но на самом деле

Сработало. Так что пока у меня всё в порядке. Хотя у меня нет представления, почему мы сталкиваемся с таким поведением. Я был бы рад узнать, что ещё могло быть причиной.

Заранее спасибо за ваше время и за то, что уже уделили его.

Что ж, Ed_S, что я могу сказать, кроме как:

ОГРОМНОЕ СПАСИБО

На самом деле ваш маленький намёк сработал. Я просто написал одно новое сообщение и опубликовал ещё один ответ, и ошибка исчезла.

Даже то, что вы сейчас мой герой, не освобождает вас от дальнейших вопросов :wink: Надеюсь, вы не против, если я попрошу вас ещё немного объяснить, что, чёрт возьми, здесь произошло.

Во-первых, помогите мне лучше понять, как читать логи. Я имею в виду, какое это было гениальное предположение. Что именно заставило вас подумать, что проблема в сериализации?

lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'

Почему не cook_url или, не знаю, что-то ещё?

Во-вторых, какие у вас рекомендации? Нужно ли мне быть готовым к повторению такой проблемы? Или, возможно, это касается другого пользователя?

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

Забавно, что некоторые администраторы сделали точно то же самое — написали новое сообщение (тему) на аккаунт, который был затронут, — но мы не наблюдали никакого другого поведения. Как-то последнее сообщение, отправленное мной затронутому аккаунту, сработало.

И в заключение: можно ли получить ваш номер телефона на случай экстренных звонков? Шучу! :wink:

Но если серьёзно, огромное, огромное, огромное спасибо. Я действительно застрял здесь и так рад, что наш пользователь — как я уже упоминал, один из наших администраторов — снова в строю. Спасибо, Ed_S!

:clap:
Очень хорошее предположение!

Ха-ха, похоже, мне повезло. Особенность трассировки стека в том, что она идёт от частного к общему — это не просто список событий, а картина вложенных взаимодействий: от общего кода до конкретных механизмов. Поэтому идея с «изображением» показалась интересной, ведь в списке сообщений есть только аватарки. К тому же, мы уже сталкивались со странными проблемами, связанными с аватарками.

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

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

Существует задача rake для исправления этого:

./launcher enter app
rake uploads:secure_upload_analyse_and_update

Рекомендую запустить её.

Привет, Сэм,

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

Я попробовал:

Но на выходе всё то же самое: эта команда работает только для внешних хранилищ S3, а так как у нас такое хранилище ещё не настроено, я немного растерян.

Вот вывод моей консоли:

./launcher enter app
rake uploads:secure_upload_analyse_and_update
This task only works for external storage.

Не упускаю ли я что-то? Или это баг, и команда должна работать, даже если secure media отключён?

Спасибо за вашу экспертизу.

На самом деле, иногда нас спасает именно удача, верно?

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

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

./launcher enter app 
mysql select bla

Или это MongoDB? Но вход в контейнер и выполнение запроса внутри него — это хотя бы правильный подход, не так ли?

Есть ли список полей или свойств, с которыми я мог бы ознакомиться, например, справочник или что-то подобное, чтобы сформировать идеи для правильного запроса?

Но давайте проясним: даже если мне удастся получить список изображений профилей в списке входящих сообщений — всё равно нет предложения, как сузить круг поиска, чтобы понять, кто именно «плохой парень», или что делать, даже если мы его найдём, верно? Есть ли у вас какие-то мысли по этому поводу?

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

Ed_S, большое спасибо, что остались со мной.

Я не очень хорошо разбираюсь в части работы с базами данных, но рекомендую плагин Data Explorer, который официально поддерживается, а также эту тему. (Лучше создавать новую тему, если у вас появляются новые вопросы — другие пользователи могут получить пользу от обсуждения, а подходящее заглавие привлечёт больше помощи.)

Редакция: возможно, стоит также посмотреть

где есть подсказки о том, как устроен этот механизм и как можно делать запросы к нему.

Привет, Ed_S,

спасибо большое за подсказки. Плагин Data Explorer просто супер! Для дальнейшего анализа это отличное место для начала!

Также была полезна подсказка про потерянные аватары. Я проверил, и всё выглядело нормально. Так что большое спасибо за то, что поделились опытом.

Пока что всё работает, и я очень доволен. Надеюсь, это продлится долго :wink:
Ещё раз спасибо, Ed_S, за постоянную помощь.

Если кто-то ещё столкнётся с подобной ошибкой, пожалуйста, дайте знать, с чем вы столкнулись и что можно сделать, чтобы предотвратить такие ошибки.

Всем спасибо за чтение.