Depuis notre mise à jour 3.1.0 aujourd’hui, notre recherche ne fonctionne plus.
Notre équipe d’administrateurs système a identifié un problème et nous a fourni ce journal indiquant qu’il s’agit d’une erreur d’application.
D’autres personnes rencontrent-elles ce problème et quels indices pourraient nous aider à résoudre le problème nous-mêmes ? Je vois que la recherche fonctionne parfaitement sur 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)
Notre recherche est complètement défaillante lorsqu’elle est exécutée contre PostgreSQL 14, c’est pourquoi nous continuons à distribuer PostgreSQL 13 pour tous ceux qui suivent notre installation standard.
Nous finirons par la corriger puisque nous passerons un jour à PostgreSQL 15 (ou 16), mais cela pourrait prendre un certain temps.
Merci. Nous enquêtons sur la façon dont cela a pu se produire SI nous avons déjà eu d’autres versions de PostgreSQL. Nous reviendrons vers vous une fois le problème identifié.
Nous voyons l’exigence “Postgres 13+” ici. Puis-je me tromper en suggérant à votre équipe d’ajouter une note indiquant que Discourse ne prend en charge que les versions 13.X ? Peut-être qu’une note explicite indiquant que les versions 14/15/… ne sont pas prises en charge serait également utile dans des cas comme le nôtre.
Vous voyez, nous avions la version 14 au moins depuis décembre, et nous avions la version stable de Discourse installée depuis des mois auparavant. Récemment, nous sommes revenus à la version tests-passés, la recherche a fonctionné comme prévu. Aujourd’hui, nous sommes passés de 2.9.0.beta14 à 3.1.0.beta1 et maintenant c’est cassé.
Pas clair, mais c’était le problème dans mon cas (mêmes symptômes - bien qu’avec PostgreSQL13)
Je suis sûr que Richard va bientôt le corriger, en attendant un fork et une simple modification est une solution.
Oh. Dommage. J’ai un site que j’ai mis à niveau vers PG14 par accident il y a quelque temps, et j’ai pensé que ce serait bien.
J’ai juste fait quelques recherches et elles n’étaient pas manifestement terriblement cassées. Et le site est principalement en chinois, donc je ne pourrais pas vraiment le dire de toute façon.
À quel point est-ce cassé et sera-t-il difficile de le réparer ?
Le mode sans échec n’affecte que le côté client. Cette erreur se produit sur le serveur. Pour vérifier si l’erreur est liée au plugin de réponses privées, vous devrez désinstaller complètement ce plugin.
Cette erreur semble effectivement liée à une incompatibilité de plugin avec Ruby 3.1.
Ce plugin perturbe la recherche et déclenchera l’erreur 500.
Mais l’exécution de PostgreSQL 14+ perturbera également la recherche, mais d’une manière plus subtile où de nombreux résultats qui seraient retournés sur pg13 ne le seront pas sur pg14+.
Donc @kinetiksoft peut supprimer le plugin et reconstruire pour que la recherche ne génère pas d’erreur, mais elle ne fonctionnera toujours pas normalement à cause de la version de pg.
Je peux maintenant confirmer que la recherche fonctionne comme prévu depuis que nous avons supprimé le plugin Discourse Private Replies.
Aucun changement n’a été effectué côté serveur, PostgreSQL est toujours en version 14.6-1, mais nous examinerons les options de rétrogradation la semaine prochaine.
Merci à tous, vous avez sauvé notre fonctionnalité de recherche pour ce week-end.
P.S. Nous demandons gentiment à l’équipe Discourse @ github d’ajouter une mise en garde concernant la version de PostgreSQL dans la documentation officielle :
Avez-vous consulté la documentation sur l’exécution de PostgreSQL externe ? Elle se trouve ici sur Meta, pas sur github. Toute la documentation est visible sur Documentation - Discourse Meta