搜索特定短语返回“500 Internal Server Error”

你好,

我们观察到 Discourse 的搜索功能偶尔会出现问题。

观察结果

在过去几周里,我们在 https://community.hiveeyes.org/ 进行搜索时,偶尔会收到“500 内部服务器错误”响应。虽然这听起来有点滑稽,但我们认为这实际上与搜索短语有关。

问题仅出现在使用汉堡菜单旁边的即时搜索时。如果先导航到搜索页面 /search,再从那里发起搜索,则一切正常。

现在,由于其他人也向我们指出了我们平台上的这个问题,我们终于决定开始详细调查。

亲自验证

幸运的是,我们刚刚在 Meta 上成功复现了该问题。因此,当搜索“search returns 500”时,我们能够确定性地触发该错误。即使未登录系统,也会出现此问题。

响应内容如下:

搜索短语是罪魁祸首——真的吗?

感觉确实如此。以相同方式搜索“search croaks 500”则不会触发该问题。

总结

我们觉得这件事既奇怪又有趣,因此想与你们分享我们的观察结果。虽然我们并未受到严重影响,但如果您有时间,我相信您也会愿意调查一下。

感谢您的聆听,此致
Andreas。

附:在 Meta 上搜索该问题时触发此错误,甚至更加有趣,因为我相信我们所有人仍然热爱递归。

3 个赞

嗯,是的。这是我们在日志中遇到的错误

URI::InvalidURIError (bad URI(is not URI?): "http:error]")
/usr/local/lib/ruby/2.6.0/uri/rfc3986_parser.rb:67:in `split'

/usr/local/lib/ruby/2.6.0/uri/rfc3986_parser.rb:67:in `split'
/usr/local/lib/ruby/2.6.0/uri/rfc3986_parser.rb:73:in `parse'
/usr/local/lib/ruby/2.6.0/uri/common.rb:234:in `parse'
/usr/local/lib/ruby/2.6.0/uri/common.rb:737:in `URI'
/var/www/discourse/lib/search/grouped_search_results.rb:83:in `block in blurb_for'
/usr/local/lib/ruby/2.6.0/set.rb:338:in `each_key'
/usr/local/lib/ruby/2.6.0/set.rb:338:in `each'
/var/www/discourse/lib/search/grouped_search_results.rb:82:in `blurb_for'
/var/www/discourse/lib/search/grouped_search_results.rb:60:in `blurb'
/var/www/discourse/app/serializers/search_post_serializer.rb:9:in `blurb'

感谢报告此问题 @amotl

5 个赞

感谢 @amotl@david,现在 meta 上已修复,参见:FIX: skip invalid URLs when checking for audio/video in search blurbs · discourse/discourse@0dfc594 · GitHub

6 个赞

亲爱的 @david@pmusaraj

感谢你们迅速完成了从确认到实际修复的工作。我们期待收到此修复。它是否会包含在 2.4.0.beta7 版本中?

此致
Andreas

2 个赞

是的,它将包含在下一个测试版中。

6 个赞

本主题已在 5 天后自动关闭。不再允许新回复。