La recherche renvoie une erreur "500 Internal Server Error" pour certaines phrases

Bonjour,

Nous constatons des problèmes sporadiques lors de l’utilisation de la fonctionnalité de recherche de Discourse.

Observations

Au cours des dernières semaines, nous avons observé des réponses sporadiques « 500 Internal Server Error » lors de recherches sur https://community.hiveeyes.org/. Bien que cela puisse sembler amusant, nous pensons que cela dépend en réalité de la phrase de recherche.

Le problème ne se produit que lors de l’utilisation de la recherche immédiate près du menu hamburger. Lorsque nous naviguons vers la page de recherche /search avant d’effectuer la recherche depuis celle-ci, tout fonctionne correctement.

Maintenant, après que d’autres nous aient également signalé ce problème sur notre plateforme, nous avons enfin souhaité commencer à enquêter en détail sur ce problème.

Voyez par vous-même

Heureusement, nous venons de réussir à le reproduire sur Meta. Ainsi, en recherchant « search returns 500 », nous avons pu déclencher cette erreur de manière déterministe. Cela se produit également lorsque nous ne sommes pas connectés au système.

La réponse est :

La phrase de recherche est le coupable – sérieusement ?

On dirait bien. Rechercher « search croaks 500 » de la même manière ne déclenche pas ce problème.

Conclusion

Nous trouvons cette situation à la fois étrange et suffisamment amusante pour partager nos observations avec vous. Bien que nous ne souffrions pas gravement, je pense que vous aimeriez enquêter là-dessus si votre temps le permet.

Merci de nous avoir écoutés et cordialement,
Andreas.

P.S. : Déclencher cette erreur en recherchant le problème sur Meta rend la chose encore plus amusante, car je pense que nous aimons tous encore les récursions.

3 « J'aime »

Hmm, oui. C’est l’erreur que nous obtenons dans les journaux

URI::InvalidURIError (mauvaise URI (n'est pas une 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'

Merci pour le signalement @amotl

5 « J'aime »

Merci @amotl et @david, c’est maintenant corrigé ici sur meta via FIX: skip invalid URLs when checking for audio/video in search blurbs · discourse/discourse@0dfc594 · GitHub

6 « J'aime »

Cher @david et chère @pmusaraj,

merci pour la rapidité avec laquelle vous avez traité ce sujet, de la confirmation jusqu’à la correction effective. Nous sommes impatients de recevoir cette correction. Sera-t-elle incluse dans la version 2.4.0.beta7 peut-être ?

Cordialement,
Andreas.

2 « J'aime »

Oui, cela sera inclus dans la prochaine bêta.

6 « J'aime »

Ce sujet a été automatiquement fermé après 5 jours. De nouvelles réponses ne sont plus autorisées.