今日の3.1.0アップデート以降、検索が機能しなくなりました。
システム管理チームが問題を特定し、これがアプリケーションエラーであるというログを提供してくれました。
他の人もこの問題を経験していますか?また、この問題を自分で解決するための手がかりは何でしょうか?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)
問題のスクリーンショット
Jagster
(Jakke Lehtonen)
2
それは完全に一般的な問題ではないはずです。私のものは正常に動作しています。私も同様です(Metaは最新版だと思います)。
/safe-mode を試すとどうなりますか?
残念ながら、セーフモードでも動作しません。テーマなし、プラグインなしモードです。
「トピック/投稿」の検索が機能しないことは確認していますが、「カテゴリ/タグ」および「ユーザー」の検索は機能します。
Falco
(Falco)
5
外部のPostgreSQLインスタンスを使用していますか?もしそうなら、バージョンはいくつですか?
はい、外部のPostgreSQLを使用しています。バージョンは14.6-1です。
「いいね!」 1
Falco
(Falco)
7
PostgreSQL 14 で実行すると、検索が完全に壊れてしまうため、標準インストールに従っているすべてのユーザーには PostgreSQL 13 を引き続き提供しています。
いつか PostgreSQL 15 (または 16) にアップグレードする際に修正する予定ですが、時間がかかる可能性があります。
「いいね!」 3
ありがとうございます。以前に他のPostgreSQLバージョンがあったかどうかを調査しています。問題が特定され次第、ご連絡いたします。
「いいね!」 1
Stephen
(Stephen)
9
以前は14をお持ちだったかどうかはあまり関係ありません。DiscourseはPostgreSQL 14と互換性がありません。それが問題です。
「いいね!」 1
代わりに discourse/docs/INSTALL.md at main · discourse/discourse · GitHub のドキュメントを確認しました。クラウドのドキュメントにはサーバー要件が全く記載されていませんでした。
こちらで「Postgres 13+」の要件を確認しました。Discourse は 13.X バージョンのみをサポートするという注意書きを追加するようチームに提案するのは間違っているでしょうか?場合によっては、14/15/… バージョンがサポートされていないという明示的な注意書きも、今回のようなケースでは役立つかもしれません。
ご存知の通り、私たちは少なくとも12月以降、バージョン14を使用しており、それ以前から安定版のDiscourseをインストールしていました。最近、tests-passed バージョンに戻したところ、検索は期待通りに機能しました。本日、2.9.0.beta14 から 3.1.0.beta1 にアップデートしたところ、動作しなくなりました。
Benjamin_D
(Benjamin Decotte)
11
プライベート返信プラグインを使用する可能性はありますか?
「いいね!」 4
インストール済みですが、管理設定で無効になっています。
セーフモードでも問題を再現してみました。どちらにしても関係があるのでしょうか?
Benjamin_D
(Benjamin Decotte)
13
私の場合は(症状は同じですが、PostgreSQL13を使用)、問題は不明瞭でしたが、それが原因でした。
Richardがすぐに修正してくれると思いますが、それまでの間はフォークして簡単な編集を行うことで解決できます。
「いいね!」 2
pfaffman
(Jay Pfaffman)
14
おお。残念です。私は以前、ほとんど誤って PG14 にアップグレードしたサイトを 1 つ持っていて、大丈夫だと思っていました。
いくつか検索してみましたが、明らかにひどく壊れているわけではありませんでした。そして、そのサイトはほとんど中国語なので、どちらにしても本当のところはわかりません。
どのくらい壊れていて、それを修正するのはどれくらい難しいのでしょうか?
「いいね!」 2
david
(David Taylor)
15
セーフモードはクライアントサイドにのみ影響します。このエラーはサーバーで発生しています。プライベート返信プラグインに関連するエラーかどうかを確認するには、そのプラグインを完全にアンインストールする必要があります。
このエラーは、Ruby 3.1 プラグインの非互換性に関連している可能性が高いようです。
「いいね!」 4
Benjamin_D
(Benjamin Decotte)
16
それなら、プラグインの execute(readonly_mode) が原因であると確信しています(理由は全く分かりませんが
)
「いいね!」 3
Falco
(Falco)
17
おっしゃる通りです、@Benjamin_D。
そのプラグインは検索を壊し、エラー500を引き起こします。
しかし、PostgreSQL 14以降を実行すると、検索が壊れるだけでなく、pg13では返されるはずの結果の多くがpg14以降では返されないという、より微妙な方法で壊れます。
そのため、@kinetiksoft はプラグインを削除して再構築することで、検索エラーを回避できますが、pgのバージョンが原因で通常どおりには機能しません。
「いいね!」 4
Discourse Private Replies plugin を削除したため、検索が期待どおりに機能することを確認できました。
サーバー側では何も変更されておらず、PostgreSQL は 14.6-1 のままですが、来週ダウングレードのオプションを検討する予定です。
皆さん、ありがとうございました。今週末の検索機能を救ってくれました。
追伸:公式ドキュメントに PostgreSQL のバージョンに関する注意喚起を追加するよう、Discourse @ github チームにお願いします。
「いいね!」 3
Stephen
(Stephen)
19
外部PostgreSQLの実行に関するドキュメントを確認しましたか?それはgithubではなく、Metaにあります。すべてのドキュメントはhttps://meta.discourse.org/docsで確認できます。
「いいね!」 1
RGJ
(Richard - Communiteq)
20
申し訳ありません!プライベート返信プラグインが検索を壊していました(または、Ruby 3.1 がプラグインを壊していました)。
現在、正常に動作しています。
「いいね!」 5