Desde nuestra actualización 3.1.0 de hoy, nuestra búsqueda ya no funciona.
Nuestro equipo de sysadmin identificó un problema y nos proporcionó este registro que indica que se trata de un error de aplicación.
¿Alguien más experimenta este problema y cuáles podrían ser las pistas para que podamos resolver el problema nosotros mismos? Veo que la búsqueda funciona perfectamente en Discourse Meta.
Started GET "/search?q=37%20%20realm&page=1" for [IP_REDACTED] at 2023-01-13 11:19:36 +0000
Processing by SearchController#show as JSON
Parameters: {"q"=>"37 realm", "page"=>"1"}
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms | Allocations: 1555)
ArgumentError (wrong number of arguments (given 1, expected 0))
lib/search.rb:285:in `execute'
app/controllers/search_controller.rb:73:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Failed to handle exception in exception app middleware : ArgumentError : wrong number of arguments (given 1, expected 0)
Nuestra búsqueda está completamente rota cuando se ejecuta contra PostgreSQL 14, por lo que todavía enviamos PostgreSQL 13 para todos los que siguen nuestra instalación estándar.
Eventualmente lo arreglaremos ya que actualizaremos a PostgreSQL 15 (o 16) algún día, pero puede llevar un tiempo.
Gracias. Estamos investigando cómo pudo haber sucedido SI hemos tenido otras versiones de PostgreSQL anteriormente. Nos pondremos en contacto con usted una vez que identifiquemos el problema.
Vemos el requisito “Postgres 13+” aquí. ¿Puedo estar equivocado al sugerir a su equipo que añada un aviso de que Discourse solo admite versiones 13.X? Quizás, un aviso explícito de que las versiones 14/15/… no son compatibles también sería útil en casos como el nuestro.
Como ven, hemos tenido la versión 14 al menos desde diciembre, y hemos tenido la versión estable de Discourse instalada desde meses antes. Recientemente, volvimos a la versión tests-passed, la búsqueda funcionó como se esperaba. Hoy, actualizamos de 2.9.0.beta14 a 3.1.0.beta1 y ahora está roto.
No está claro, pero ese fue el problema en mi caso (mismos síntomas, aunque con PostgreSQL13).
Estoy seguro de que Richard lo solucionará en breve, mientras tanto, un fork y una edición simple son una solución.
Oh. Qué lástima. Tengo un sitio que, en su mayor parte, actualicé accidentalmente a PG14 hace un tiempo y pensé que estaría bien.
Solo hice algunas búsquedas y no estaban obviamente terriblemente rotas. Y el sitio está mayormente en chino, así que de todos modos no podría saberlo realmente.
¿Qué tan rota está y qué tan difícil será arreglarlo?
El modo seguro solo afecta al lado del cliente. Este error está ocurriendo en el servidor. Para verificar si el error está relacionado con el plugin de respuestas privadas, necesitará desinstalar completamente ese plugin.
Este error parece estar relacionado con una incompatibilidad del plugin con Ruby 3.1.
Ese plugin sí interrumpe la búsqueda y provocará el error 500.
Pero ejecutar PostgreSQL 14+ también interrumpirá la búsqueda, pero de una manera más sutil, donde muchos resultados que se devolverían en pg13 no se devolverán en pg14+.
Así que @kinetiksoft puede eliminar el plugin y reconstruir para que la búsqueda no genere errores, pero aún así no funcionará normalmente debido a la versión de pg.
¿Has consultado la documentación sobre la ejecución de PostgreSQL externo? Está aquí en Meta, no en GitHub. Toda la documentación es visible en Documentation - Discourse Meta