Pesquisa retorna "500 Internal Server Error" para frases de busca específicas

Olá,

Estamos observando problemas esporádicos ao usar o recurso de pesquisa do Discourse.

Observações

Nas últimas semanas, notamos respostas esporádicas de “500 Internal Server Error” ao pesquisar em https://community.hiveeyes.org/. Embora isso possa parecer engraçado, acreditamos que isso realmente depende da frase de pesquisa.

O problema ocorre apenas ao usar a pesquisa ad hoc próxima ao menu hambúrguer. Ao navegar para a página de pesquisa /search antes e invocar a pesquisa a partir dali, tudo funciona normalmente.

Agora, após outros também nos apontarem esse problema em nossa plataforma, finalmente decidimos começar a investigar esse problema em detalhes.

Veja por si mesmo

Tivemos a sorte de conseguir reproduzi-lo no Meta. Então, ao pesquisar por “search returns 500”, conseguimos acionar esse erro de forma determinística. Isso também acontece quando não estamos logados no sistema.

A resposta é:

A frase de pesquisa é a culpada — sério mesmo?

Parece que sim. Pesquisar por “search croaks 500” da mesma maneira não aciona esse problema.

Conclusão

Achamos essa coisa tão estranha e engraçada que decidimos compartilhar nossas observações com vocês. Embora não estejamos sofrendo gravemente, acredito que vocês gostariam de investigar isso se tiverem tempo.

Obrigado por ouvir e com os melhores cumprimentos,
Andreas.

P.S.: Acionar esse erro ao pesquisar pelo problema no Meta torna tudo ainda mais engraçado, pois acredito que todos nós ainda amamos recursões.

3 curtidas

Hmm, sim. Este é o erro que aparece nos logs

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'

Obrigado pelo relatório @amotl

5 curtidas

Obrigado, @amotl e @david, isso já foi corrigido aqui no meta via FIX: skip invalid URLs when checking for audio/video in search blurbs · discourse/discourse@0dfc594 · GitHub

6 curtidas

Prezado @david e @pmusaraj,

obrigado pela rápida resposta, desde a confirmação até a correção efetiva. Estamos ansiosos para receber essa correção. Ela será incluída na versão 2.4.0.beta7, talvez?

Com os melhores cumprimentos,
Andreas.

2 curtidas

Sim, ele será incluído na próxima beta.

6 curtidas

Este tópico foi automaticamente fechado após 5 dias. Novas respostas não são mais permitidas.