La búsqueda devuelve "500 Internal Server Error" para frases específicas

Hola,

hemos observado problemas esporádicos al usar la función de búsqueda de Discourse.

Observaciones

Durante las últimas semanas, hemos detectado respuestas esporádicas de “500 Internal Server Error” al buscar en https://community.hiveeyes.org/. Aunque pueda parecer gracioso, creemos que esto realmente depende de la frase de búsqueda.

El problema solo ocurre al usar la búsqueda ad hoc cerca del menú hamburguesa. Si navegas a la página de búsqueda /search antes y ejecutas la búsqueda desde allí, todo funciona correctamente.

Ahora, después de que otros también nos señalaron este problema en nuestra plataforma, finalmente quisimos comenzar a investigarlo en detalle.

Compruébalo tú mismo

Por suerte, acabamos de poder reproducirlo en Meta. Así, al buscar “search returns 500”, hemos logrado activar ese error de manera determinista. También ocurre cuando no has iniciado sesión en el sistema.

La respuesta es:

¿La frase de búsqueda es la culpable? ¿En serio?

Así parece. Buscar “search croaks 500” de la misma manera no activa ese problema.

Conclusión

Encontramos esto tan extraño como divertido como para compartir nuestras observaciones contigo. Aunque no estamos sufriendo demasiado, creo que te gustaría investigar esto si tienes tiempo disponible.

Gracias por escuchar y un cordial saludo,
Andreas.

P.D.: Activar ese error al buscar el problema en Meta lo hace aún más gracioso, ya que creo que a todos nos siguen encantando las recursiones.

3 Me gusta

Hmm, sí. Este es el error que obtenemos en los registros

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'

Gracias por el reporte, @amotl

5 Me gusta

Gracias @amotl y @david, esto ya está corregido aquí en meta mediante FIX: skip invalid URLs when checking for audio/video in search blurbs · discourse/discourse@0dfc594 · GitHub

6 Me gusta

Estimados @david y @pmusaraj,

gracias por la rápida respuesta, desde la confirmación hasta la corrección en sí. Estamos ansiosos por recibir esta corrección. ¿Quizás se incluirá en la versión 2.4.0.beta7?

Saludos cordiales,
Andreas.

2 Me gusta

Sí, se incluirá en la próxima versión beta.

6 Me gusta

Este tema se cerró automáticamente después de 5 días. Ya no se permiten nuevas respuestas.