特定検索語で「500 Internal Server Error」が返る

こんにちは、

Discourse の検索機能において、断続的な問題が発生していることを確認しています。

観察結果

過去数週間、https://community.hiveeyes.org/ で検索を行う際に、断続的に「500 Internal Server Error」のレスポンスが返される現象が観測されました。一見すると面白いように思えるかもしれませんが、実際には検索クエリに依存していると考えています。

この問題は、ハンバーガーメニュー付近にあるアドホック検索を使用した場合にのみ発生します。一方、/search ページに移動してから検索を実行した場合は問題なく動作します。

現在、他のユーザーからも同様の問題が報告されるようになったため、ようやく詳細な調査を開始することになりました。

ご自身で確認してみてください

幸運にも、Meta サイト上でこの問題を再現することに成功しました。「search returns 500」と検索すると、確実にこのエラーをトリガーできます。ログインしていない状態でも同様に発生します。

レスポンスは以下の通りです:

検索クエリが悪者?まじで?

まさにその通りです。同じ手順で「search croaks 500」と検索しても、この問題は発生しません。

まとめ

この現象は奇妙であり、同時に面白いと感じたため、皆様と共有することにしました。私たちが深刻な被害を受けているわけではありませんが、もしお時間許せば、調査していただけると幸いです。

ご共有いただき、ありがとうございました。
よろしくお願いいたします、
アンドレアス

追伸: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 さん、ありがとうございます。これでメタサイト上で修正されました。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日後に自動的に閉鎖されました。新しい返信は受け付けられません。