ユーザーメッセージ受信トレイ エラー 500

こんにちは、

非常に奇妙な現象が発生していますが、現在は特定の 1 人のユーザーのみで、メッセージの受信トレイを開いたときに起こっています。

Discourse は Docker 上で実行しており、Apache の ProxyPass を使用しています。Discourse のバージョンは 2.6.0.beta3 です。

ある特定のユーザーがメッセージペインを展開できません。そこには「No Content」という表示、あるいは「Keine Inhalte」の英語元の表示が出ています(私たちは de.DE を使用しています)。

そして、再びメッセージアイコンをクリックすると、つまりそのユーザーがメッセージの受信トレイを開こうとすると、500 エラーが発生します。

ページには "error on loading: [/topics/private-messages/firstname.name.json]" と表示されます。

これは特定の 1 人のユーザーにのみ発生しており、他のユーザーには問題がありません。

そのユーザーが https://domain.de/u/firstname.name/messages/sent または https://domain.de/u/firstname.name/messages/group/any にアクセスすると、すべて正常に動作します。

しかし、https://domain.de/u/firstname.name/messages/ または https://domain.de/u/firstname.name/messages/inbox にアクセスすると、エラー 500 が発生します。

そのユーザーのロールを変更したり、アプリを更新してランチャーを通じて再構築したりしましたが、残念ながら受信トレイを開くと依然としてエラー 500が発生します。

このような現象を経験した方はいますか?どうすればよいでしょうか?メッセージを再構築する方法はありますか?それとも削除する必要があるのでしょうか?

現在途方に暮れているため、アドバイスをお願いいたします。

よろしくお願いいたします。

先日、/topics/private-messages-group のグループ名で同様の現象を目にしました。原因は、大文字小文字を区別する検索が行われており、URL 内のグループ名がすべて小文字になっていたことです。

URL の大文字小文字をユーザー名の大文字小文字に合わせて変更した場合、動作が変わるか確認していただけますか?(例:https://domain.de/u/Firstname.Name/messages のように)

「いいね!」 5

リチャードさん、こんにちは。

お早いご返信をありがとうございます!

ご提案いただいた通り、大文字・小文字を変えて試してみました。

  • …Firstname.Name…

また、以下のような他の大文字・小文字の組み合わせも試しました。

  • …firstname.Name…
  • …Firstname.name…
  • …FIRSTNAME.NAME…

しかし、エラーは依旧として発生しています

https://domain.de/u/Firstname.Name/messages/sent や他のルートは、以前と同様に正常に動作しました。

何かヒントはありますでしょうか?

お手伝いいただけますと大変感謝いたします。

もともとかなり難しい話だったので、残念ながらこれ以上ヒントをお伝えすることもできません。

「いいね!」 2

問題ありません、いつどうなるか分かりませんよね?どんなお手伝いでも嬉しいです。

もしかしたら他の誰かが何か付け加えてくれるかもしれませんね?
ありがとうございます!

こんにちは、

私たちの問題について、どなたかお手伝いいただければ幸いです。@RGJ さんの示唆を踏まえて、問題の根はもう少し深いところにあることがわかったのですが、まだ特定のユーザーの受信トレイにアクセスできないという問題は解決できていません。 残念ながら、私たちはメッセージ機能を非常に頻繁に利用しています。私たちは小さなグループで組織されており、非公開で頻繁にコミュニケーションを取る必要があるため、メッセージは最適な手段です。

さらに情報やログが必要な場合は、何を必要としているかお知らせください。ここに貼り付けます。

さらなるヒントをいただき、また読んでくださり、ありがとうございます :wink:

管理者としてログインした状態で、Web ブラウザからエラーログを確認しましたか?

@codinghorror さらなるご支援を心よりありがとうございます。

実際、このリクエストに関するエラー出力は非常に長いものです。しかし、解決策が見つかりません。

ここにログ情報を記載します。

メッセージ(21 件の報告)

NoMethodError (undefined method `downcase' for nil:NilClass)
app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
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'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:451:in `serialize_data'
app/controllers/application_controller.rb:460:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
app/controllers/application_controller.rb:351:in `block in with_resolved_locale'
app/controllers/application_controller.rb:351:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

バックトレース

app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
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'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `serialize'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:368:in `block in include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `each_key'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:362:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:343:in `as_json'
app/controllers/application_controller.rb:451:in `serialize_data'
app/controllers/application_controller.rb:460:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
actionpack (6.0.3.3) lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
actionpack (6.0.3.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:195:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:112:in `block in run_callbacks'
app/controllers/application_controller.rb:351:in `block in with_resolved_locale'
i18n (1.8.5) lib/i18n.rb:313:in `with_locale'
app/controllers/application_controller.rb:351:in `with_resolved_locale'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'
activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'
actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.1.0) lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.4) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler (2.1.0) lib/mini_profiler/profiler.rb:235:in `call'
message_bus (3.3.2) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:176:in `call'
railties (6.0.3.3) lib/rails/engine.rb:527:in `call'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (5.7.0) lib/unicorn/http_server.rb:632:in `process_client'
unicorn (5.7.0) lib/unicorn/http_server.rb:728:in `worker_loop'
unicorn (5.7.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn (5.7.0) lib/unicorn/http_server.rb:144:in `start'
unicorn (5.7.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

ENV

hostname config-app
process_id 273
application_version 891987a2843de3ebeed412e01fd6b8064dac3917
HTTP_HOST sub.domain..de
REQUEST_URI /topics/private-messages/firstname.name.json
REQUEST_METHOD GET
HTTP_USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:81.0) Gecko/20100101 Firefox/81.0
HTTP_ACCEPT application/json, text/javascript, /; q=0.01
HTTP_REFERER https://sub.domain.de/u/firstname.name/messages
HTTP_X_FORWARDED_FOR 2003:d6:9720:2500:c4b4:5a78:fb34:fbe8, unix:
HTTP_X_REAL_IP unix:
username firstname.name
time 8:38 pm

これだけ多くの情報があり、どこを見ればよいのか見当もつきません。これが問題の解決に役立つことを願っています。さらに情報が必要であれば、お知らせください。

ご確認いただき、心より感謝申し上げます!
THX

「いいね!」 1

s3_bucket_name が無効ではありませんか?

返信ありがとうございます。

簡潔に答えると:わかりませんし、おそらくそうではないと思います。

S3 バケット名は、S3 Amazon ストレージシステムに関連するものですよね?もしそうなら、無効である可能性は低いでしょう。私たちは一度も設定したことがありません。私たちは、リバースプロキシの Apache ドメイン上で Docker 化された Discourse を実行しています。

もし S3 バケットが無効なら、特定のユーザーの特定のルートだけでなく、もっと多くの箇所でクラッシュするはずではありませんか?

誤解しないでください。私が全くの勘違いをしている可能性もあります。先ほど述べた通り、この s3_bucket_name が何なのか、あるいは(私の理解が正しければ)なぜ設定する必要があるのかが確信持てません。

管理パネルで確認できますか?それとも docker-compose を確認する必要がありますか?

お待たせして申し訳ありません… 異なるタイムゾーンと勤務時間… ご存知の通りです。

しかし、この件に目を向けていただき、本当にありがとうございます!

設定を確認したところ、すべての S3 オプションが空になっています。これは SE バケットを使用していないため、これで正しいのでしょうか?それとも私の理解が間違っているのでしょうか?

「セキュアメディア」サイトの設定を有効にしましたか?

いいえ、設定の理解からすると、そうではないと思います。セキュアメディアのメールオプションはまだ有効化していません。

このエラーは開始時からは発生していません。メールで送信された埋め込み画像が原因かもしれませんか?

このオプションを無効にしてみるべきでしょうか?

ただし、前述の通り

つまり、s3 の認証情報が一切設定されていない場合、セキュアメディアは機能しないはずです。間違っていますか?

「いいね!」 2

まだ誰かいらっしゃいますか?何か試せることがわかりますか?

実は、当社の管理者の一人にこの問題が発生しており、メッセージに返信したり閲覧したりできない管理者がいるため、コミュニケーションが非常に困難になっています。

現時点での解決策としては、メッセージの受信トレイに再度アクセスできるようにすることです。何かハックや、単一のユーザーアカウントを再構築する方法、あるいは──わかりませんが──単一のユーザーのすべてのメッセージを削除する方法はありますか?そうすれば、このアカウントを最初からやり直すことができます。

さらに、このアカウントを削除することも考えていましたが、ユーザーの削除はできないと理解しています。このユーザーが再度参加できるように、新しいアカウントを作成するために他に試せることはありますか?

ご意見をお聞かせください。私はここで行き詰まっています。

事前にありがとうございます。

申し訳ありませんが、再度お伺いします。この問題がまだ続いている状況において、"secure media"を有効化することは、問題の原因なのか、それとも解決策の一部としてご質問されたのでしょうか?

現在、このオプションは有効化されていません。有効化するべきでしょうか?

それとも、現在の設定のままにして、他のヒントを待ちながら修正を待つべきでしょうか?

「いいね!」 1

こんにちは、
私どもも同様の問題に直面しているようです。ご存知の通り、特定のユーザー向けのメッセージが機能していません。
他に確認すべき点について、ご提案はございますか?

「いいね!」 1

Jay によると:

条件 where("user_id > 0")where("user_id = あなたのユーザー ID") のようなものに置き換えてみることをお勧めします。

なぜこれが起こるのかについては、ローカル環境に起因するものだと推測します。私自身も、クォートマークやアクセントなどで時々問題に直面することがあります :wink:

「いいね!」 1

なるほど、試してみるのは良さそうですね。

ローカライゼーションについて考えていたのですが、ユーザーのインターフェース設定を変更することで動作を変えた方が良いのではないかと思い、どうお考えか伺いたいです。

数日中に削除の解決策を試してみます。

ご協力ありがとうございます。

その間、私たちは少し検討しました。何か他の情報があれば共有してください。

もう一つ奇妙な点として、メッセージペインの領域でユーザーアイコンをクリックし、次に封筒アイコンをクリックすると、すべての最近のメッセージが表示されるはずです。しかし、インボックスを開けないユーザーの場合、何も表示されません。

何かアイデアがあれば教えてください。確かにいくつかのエントリがリストされるはずです。

これで何かヒントになるかもしれませんか?

他にも考えられるアプローチがあります。当サイトではまだ何らかの SSL エラーが発生しています。お話しした通り、Discourse を Docker で実行し、Apache のリバースプロキシの背後に配置しています。ドメイン自体は Let’s Encrypt による有効な SSL 証明書を持っています。

しかし、サイト上で「Mixed Content」の警告がまだ表示されています。標準的なロゴやファビコンが HTTP で提供されていることが原因ではないでしょうか。Mixed Content エラーを解消するために、カスタムブランディングを削除しました。

これが問題の原因になっている可能性はありますか?

最近、以下の JSON エンドポイントにアクセスしたところ、

{
	"status":500,
	"error":"Internal Server Error"
}

という結果が返ってきました。

https://sub.domain.de/topics/private-messages/firstnamename.json

ログを詳しく確認したところ、以下のエラーが見つかりました。

NoMethodError (undefined method `downcase' for nil:NilClass)
app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
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'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:454:in `serialize_data'
app/controllers/application_controller.rb:463:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
app/controllers/application_controller.rb:354:in `block in with_resolved_locale'
app/controllers/application_controller.rb:354:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:354:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

当サイトではセキュアなメディアや S3 は使用していませんが、以下のエントリに依然として直面しています。

app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'

これは内部的な Mixed Content エラーが原因で発生している可能性はありますか?

引き続きサポートいただき、ありがとうございます。

「いいね!」 1