嘿,大家好,
我们遇到了一个非常奇怪的问题,但目前只影响单个用户,问题出现在打开消息收件箱时。
我们在 Docker 中运行 Discourse,并通过 Apache 的 ProxyPass 进行代理,Discourse 版本为 2.6.0.beta3。
该用户无法下拉消息面板,面板上显示的是“无内容”或类似“Keine Inhalte”的英文原文——我们使用的是 de.DE 语言环境。
当该用户再次点击消息图标(即尝试打开消息收件箱)时,会出现 500 错误。
页面显示:"加载错误:[/topics/private-messages/firstname.name.json]"
这个问题仅针对特定用户,其他用户没有遇到此问题。
如果该用户访问 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 错误。
我们尝试更改该用户的角色,进行了更新,并通过 launcher 重建了应用。但不幸的是,打开收件箱时仍然会出现 500 错误。
是否有人遇到过类似行为?我们可以做些什么?是否有办法重建消息?还是必须删除它们?
请提供一些建议,我们现在有些不知所措。
提前感谢!
RGJ
(Richard - Communiteq)
2
我前几天也看到了类似的情况,当时是在 /topics/private-messages-group 中涉及组名。后来发现是大小写敏感的搜索,而 URL 中的组名全是小写。
你能否检查一下,如果你将 URL 中的大小写改为与用户名的大小写一致(例如 https://domain.de/u/Firstname.Name/messages),行为是否会不同?
5 个赞
嘿,Richard,
感谢你的快速回复!
我尝试了按照你的建议更改大小写:
我还尝试了其他不同的大小写组合:
…firstname.Name…
…Firstname.name…
…FIRSTNAME.NAME…
但仍然出现相同的错误。
我尝试了 https://domain.de/u/Firstname.Name/messages/sent 以及其他路由,这些路径和以前一样运行正常。
对此你有什么建议吗?
非常感谢您的帮助。
RGJ
(Richard - Communiteq)
4
这本来就不太靠谱,所以我恐怕连一点提示都帮不上你。
2 个赞
大家好,
我真的很希望能有人帮我们解决这个难题。正如 @RGJ 所暗示的那样,我们发现问题的根源似乎更深,但到目前为止,我们仍无法解决单个用户收件箱无法访问的问题。 不幸的是,我们确实非常依赖消息功能。我们通常以小组形式组织,这些小组经常需要进行非公开沟通。因此,消息功能对我们来说非常理想。
如果您需要更多信息,请告诉我;如果需要日志,也请告诉我具体需要哪些,我会将其粘贴到这里。
感谢大家提供的进一步建议,也感谢各位的阅读 
您以管理员身份登录并通过网页浏览器检查错误日志了吗?
@codinghorror 非常感谢您的进一步帮助。
事实上,关于此请求有一个相当长的错误输出。但我无法解决它。
我尝试在此处提供日志信息
消息(报告了 21 份副本)
NoMethodError (nil:NilClass 没有 `downcase' 方法)
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>'
环境变量
| 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 存储桶名称似乎与 S3 Amazon 存储系统有关,对吧?如果是这样,它应该不会无效。我们从未配置过它。我们在反向代理 Apache 域名上运行 Docker 化的 Discourse。
如果 S3 存储桶无效,难道不应该导致更多崩溃,而不仅仅是某个用户的一个路由吗?
请不要误会我。我可能完全走错了方向。正如我所说的,我不太确定这个 s3_bucket_name 是什么,或者说——如果我理解正确的话——为什么需要配置它。
我可以在管理面板中查找它,还是需要检查 docker-compose?
抱歉延迟回复……时区和工作时间不同……您懂的。
但非常感谢您关注此事!
我查看了设置,每个 S3 选项都是空的。这是否如我所说是正常的?因为我们不使用 SE 存储桶?还是我理解错了?
不,根据我对该设置的理解,并非如此。我们尚未启用安全媒体邮件选项。
由于我们从一开始就没有遇到过此错误,这是否可能是由通过邮件发送的嵌入图片引起的?
我应该尝试停用此选项吗?
但正如我所说:
因此,如果根本没有设置 S3 凭证,安全媒体功能应该无法工作,对吗?
2 个赞
还有人在这里吗?有什么想法我们可以尝试一下吗?
问题是,我们的一位管理员遇到了这个问题,导致他无法回复或查看消息,这给我们的沟通带来了很大困难。
目前,如果能重新访问消息收件箱,就能解决问题。那么,有没有什么方法可以重建单个用户账户,或者——我也不确定——删除某个用户的所有消息?这样我们就可以从这个账户重新开始。
此外,我甚至考虑过删除这个账户,但据我所知,删除用户是不可能的。我们还能尝试什么方法来为这个用户创建一个新账户,让他能够再次参与?
请告诉我你们有什么想法,我现在有点不知所措。
提前感谢。
抱歉,我需要再次询问。既然我们仍面临这个问题,您的意思是询问我们是否将“安全媒体”(secure media)作为问题的一部分还是解决方案的一部分启用?
我们目前并未启用此选项。我们应该启用它吗?
还是应该保持现状,并期待其他提示来解决问题?
1 个赞
您好,
看起来我们遇到了类似的问题。据我们所知,单个用户的消息功能无法正常工作。
是否还有其他建议,我们可以进一步排查?
1 个赞
Benjamin_D
(Benjamin Decotte)
17
根据 Jay 的说法:
我建议您尝试将条件 where("user_id > 0") 替换为类似 where("user_id = 您的用户 ID") 的形式。
至于为什么会发生这种情况?我猜可能是某种本地化问题。我自己有时也会遇到引号、重音符号等方面的问题……
1 个赞
嗯,这听起来值得一试。
关于本地化,我在想是否应该通过更改用户的界面设置来调整这一行为?对此您有什么看法吗?
我将在接下来的几天内尝试删除方案。
感谢您的帮助。
在此期间,我们进行了一些思考。也许其他人也有什么建议可以分享。
另一个奇怪的问题是:在消息面板区域,点击用户图标,然后点击信封图标。按理说应该会显示所有最近的邮件,对吧?但在我们用户的案例中,如果无法打开收件箱,那里就什么都没有?
也许有人对此有一些想法。因为我们完全可以确定这里应该列出一些条目。
这是否能给某些方向带来一些启发?
还有一些其他的思路。我们的网站仍然存在某种 SSL 错误。正如我之前所说,我们在 Apache 反向代理上使用 Docker 运行 Discourse,但该域名已通过 Let’s Encrypt 配置了正常的 SSL 证书。
不过,网站上仍然出现了一些混合内容警告。标准徽标和网站图标似乎是通过 HTTP 提供的。为了消除混合内容错误,我们已经删除了自定义品牌设置。
那么,这是否可能是导致问题的原因呢?
最近当我们访问 JSON 路由 https://sub.domain.de/topics/private-messages/firstnamename.json 时,返回的 JSON 结果为:
{
"status":500,
"error":"Internal Server Error"
}
仔细查看日志后,发现了以下错误:
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'
那么,这是否可能是由底层的混合内容错误引起的呢?
感谢你们一直以来的支持。
1 个赞