チャットチャンネルが表示されず、メッセージも保存されません

数時間前にアップグレードしましたが、カスタムグループを持つすべてのチャンネルでチャンネルが空になります。メッセージの書き込みと送信はできますが、ログアウトまたはページを更新すると、チャンネルに履歴がなくなります。

ログには次のように表示されます。

Message

NoMethodError (undefined method `replies_count' for nil:NilClass)
(eval):17:in `_fast_attributes'
app/controllers/application_controller.rb:545:in `render_json_dump'
app/controllers/application_controller.rb:532:in `render_serialized'
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:369: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'

Backtrace

plugins/chat/app/serializers/chat/message_serializer.rb:161:in `thread_reply_count'
(eval):17:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:73:in `serializable_array'

Env

HTTP HOSTS: foorumi.katiska.eu

何かアイデアはありますか?

編集:

もしそれが何かを意味するなら、以前は問題があったチャンネルはサブカテゴリでしたが、それらをトップカテゴリに変更しました。

しかし、私のユーザーは、その変更を行う前にすでに問題があったと主張しています。

こんにちは。

実験的(かつ非公開)なスレッド設定を試したことはありますか?

昔何かを変更したのですが…何だったか思い出せませんが、後になって実験的なものではなくなったと、ほぼ、あるいは非常に確信しています。

何か思い当たることはありますか?

これはまだ実験的で隠されたものであり、自由に試すことができます :slight_smile: 問題の可能性のある範囲を絞り込もうとしているだけです。

エラーは、スレッドが作成されたことがない場合にアクセスすべきではないコードにアクセスしようとしていることを明確に示しており、驚くべきことです。

もしここで見つけたものだけを変更し、検索で関連するものが見つからなかった場合、Rails はデフォルトではなくなったものを表示できますか?

30分以内にマージします。これで問題は解決するはずです。来週さらに調査しますが、週末ずっとこの問題でブロックされたままでいてほしくありません。

「いいね!」 4

素晴らしい!

一体何が壊れたのか、まだ理解したいです…その時、検索の改善など、新しい設定しか変更していないと確信しています。

しかし、正直に言うと…トピックをより良くできるかもしれないと思ったものは何でも試してみる傾向があり、何も起こらなければすぐに忘れてしまいます。

(そして、私は怠惰なドキュメントについていつも文句を言っています :man_facepalming:

現時点ではこれ以上の回答はありませんが、来週調査します。マージしたばかりです。オフラインになります。修正されない場合はお知らせください。明日確認します。

「いいね!」 2

まず、あなたの修正は役に立ちませんでした。すみません。あるいは、役に立ったのかもしれません。そのエラーは少し奇妙でした。

私に従ってみてください :wink:

私は5つのチャンネルを持っています。

  • TL1用が3つ
  • スタッフ用が1つ
  • 5人のカスタムグループ用が1つ

スタッフチャンネル以外のすべてをサブカテゴリからトップに移動しました。

次に、カテゴリプレビューコンポーネントがどのように機能するかを試しましたが、必要ではなかったので無効にしました。その後すぐに、カテゴリロックダウンプラグインを取得するために再構築しました。

それは機能しましたが、FKB Proテーマとログイン/サインアップモーダルで奇妙な問題が発生しました。それらは回転するローディングアイコンしか表示しませんでした。これは私の知る限りiPadでのみ発生しました。

その時点で、カスタムグループのチャットチャンネルが機能しなくなったことに気づきました。さらに、スタッフグループとTL1グループのうち2つは、ごく最近のメッセージしか表示しませんでした。1つのTL1グループは無傷でした。

セーフモードを試したり、設定でほとんどのプラグインを無効にしたりしました。効果はなく、このトピックを開きました。

要するに、いくつかの再構築、プラグインの削除と再有効化の後:

  • スタッフチャンネルと2つのTL1チャンネルはトラフィックが少ないため、14日ルールを使用していることを完全に忘れました。したがって、問題はありませんでした。
  • カスタムグループチャンネルは、Data ExplorerとCategory Lockdownの両方のプラグインをインストールしていた場合、壊れていました。有効化/無効化は関係ありませんでした。
  • これらの2つのプラグインなしで再構築すると、その壊れたチャンネルは問題ありませんでした。両方のプラグインで再再構築したとき(それは単語ですか?)、そのチャンネルはまだ正常でした。

私の無知な推測では、最初にカテゴリプレビューを試したときに何かがうまくいかなくなり、それを無効にし、次にカテゴリロックダウンで再構築し、最後にカテゴリプレビューを削除したときに何かがうまくいかなくなったようです。SQLエラーや誤ったバイトを修正するには、Data ExplorerとLockdownを完全に削除し、その後、より新しいバージョンを再インストールする必要がありました。

理解できないのは、Discourseのエラーログです。これがすべてにどのように関係しているのか。

とにかく。すべてのプラグインをオンラインに戻し、チャンネルは正常に機能しています。

こんにちは、@Jagster さん。私もチャットチームの一員で、この件をさらに調査しています。あなたが実行したことを確認しましたが、そのどれもこのエラーを引き起こすはずではありません。各チャットメッセージは、データベース内のチャットスレッドに thread_id を介して関連付けられる可能性があります。そして、あなたのメッセージの1つには、何らかの理由で存在しないスレッドの thread_id が含まれています。スレッドを削除するコードは当社にはありませんので、おそらく何らかのアップデートがうまくいかなかったのかもしれません。

このクエリを実行して、結果を投稿していただけますか?これにより、広範囲にわたる問題なのか、それとも単一の奇妙なエッジケースなのかを確認できます。

SELECT id, chat_channel_id, thread_id
FROM chat_messages
WHERE thread_id IS NOT NULL AND thread_id NOT IN (
  SELECT id FROM chat_threads
);

Data Explorer を使用したところ、以下の結果が得られました(JSON は読めるはずです ;))

{"success":true,"errors":[],"duration":0.5,"result_count":2,"params":{},"columns":["id","chat_channel_id","thread_id"],"default_limit":1000,"rows":[[10721,14,152],[10744,14,152]]}

問題のあったチャンネルは ID 14 でした。

「いいね!」 1

ありがとうございます。このバグについては、「様子見」のアプローチを取ろうと思います。なぜなら:

  1. 原因が明らかではなく、
  2. チェックしたいくつかのサイトでも再現されておらず、
  3. あなたのサイトでは1か所でしか発生していないからです。

もう一つ確認していただきたいのは、このクエリを実行して何も返されないことを確認することです。

SELECT * FROM chat_threads WHERE id = 152;

確認しました。ゼロ、何もなし

はい。何も見つけられないと修正するのは本当に難しいですね。

皆さん、ありがとうございます!

「いいね!」 1