La recherche ne fonctionne plus après la mise à jour 3.1.0.beta1

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)
Captures d'écran du problème



Ce ne peut pas être un problème totalement courant — le mien fonctionne très bien. Idem (je suppose que Meta est sur la dernière version).

Que se passe-t-il lorsque vous essayez /safe-mode ?

Malheureusement, cela ne fonctionne pas non plus en mode sans échec. Pas de thèmes, pas de mode plugins.

Nous constatons que la recherche ne fonctionne pas pour les Sujets/Articles, mais fonctionne pour les Catégories/Étiquettes et les Utilisateurs.

Utilisez-vous une instance externe de PostgreSQL ? Si oui, quelle est la version ?

Oui, nous utilisons PostgreSQL externe. La version est 14.6-1

1 « J'aime »

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.

3 « J'aime »

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é.

1 « J'aime »

Que vous ayez eu 14 auparavant n’est pas vraiment pertinent, Discourse n’est pas compatible avec PostgreSQL 14. C’est votre problème.

1 « J'aime »

J’ai consulté la documentation de discourse/docs/INSTALL.md at main · discourse/discourse · GitHub à la place, car la documentation Cloud ne contient aucune exigence serveur.

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é.

Y a-t-il une chance que vous utilisiez le plugin de réponses privées ?

4 « J'aime »

Nous l’avons installé, il est désactivé dans les paramètres d’administration

Nous avons également essayé et reproduit le problème en mode sans échec. Est-ce que cela devrait avoir de l’importance de toute façon ?

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.

2 « J'aime »

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 ?

2 « J'aime »

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.

4 « J'aime »

alors je suis à peu près sûr que c’est execute(readonly_mode) dans le plugin (et je n’ai aucune idée pourquoi :sweat_smile: )

3 « J'aime »

Vous avez raison @Benjamin_D.

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.

4 « J'aime »

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 :

3 « J'aime »

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

1 « J'aime »

Désolé à tous ! Le plugin de réponses privées cassait bien la recherche (ou : Ruby 3.1 cassait le plugin).
Cela fonctionne à nouveau.

5 « J'aime »