ロックされたトピックの差分を開こうとすると ArgumentError (要素ごとの属性制限を超過しました) が発生する

ArgumentError(要素あたりの属性数制限を超えました)- トピックのバージョン差分を表示するために「編集」アイコンをクリックした際に発生。

開発者コンソール

ログ

メッセージ(2 件のレポート)

ArgumentError(要素あたりの属性数制限を超えました)
lib/discourse_diff.rb:171:in `tokenize_html_blocks'
lib/discourse_diff.rb:10:in `initialize'
app/serializers/post_revision_serializer.rb:117:in `new'
app/serializers/post_revision_serializer.rb:117:in `body_changes'
(eval):18:in `_fast_attributes'
app/controllers/application_controller.rb:520:in `render_json_dump'
app/controllers/posts_controller.rb:408:in `latest_revision'
app/controllers/application_controller.rb:397:in `block in with_resolved_locale'
app/controllers/application_controller.rb:397:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:187:in `call'

バックトレース

nokogiri-1.12.5-x86_64 (linux) lib/nokogiri/html5/document_fragment.rb:38:in `fragment'
nokogiri-1.12.5-x86_64 (linux) lib/nokogiri/html5/document_fragment.rb:38:in `initialize'
nokogiri-1.12.5-x86_64 (linux) lib/nokogiri/html5/document_fragment.rb:52:in `new'
nokogiri-1.12.5-x86_64 (linux) lib/nokogiri/html5/document_fragment.rb:52:in `parse'
nokogiri-1.12.5-x86_64 (linux) lib/nokogiri/html5.rb:242:in `fragment'
lib/discourse_diff.rb:171:in `tokenize_html_blocks'
lib/discourse_diff.rb:10:in `initialize'
app/serializers/post_revision_serializer.rb:117:in `new'
app/serializers/post_revision_serializer.rb:117:in `body_changes'
(eval):18:in `_fast_attributes'

環境

HTTP ホスト: jai.community

これは、弊社が貴社向けにホストしているサイト上の問題でしょうか?異常な動作を引き起こしている差分を確認する必要があります。

セルフホストされています。差分を共有する最適な方法はどのようなものでしょうか?

もし秘密にすべきことがなければ、ここで再現を試みていただけますか?返信を投稿し、10 分待ってから問題の編集を行ってください。

これは公開コミュニティではなく、扱う素材もまだ一般公開されていないベータ製品に関するものです。そのため、素材の作成者にも Discourse チームにも敬意を払いつつ、ここでは共有したくありません。他に簡単な方法はありませんか?

「いいね!」 1

分割統治法はいかがでしょう?再現手順を小さく小さく絞り込み、問題の原因となる行を見つけ出してみてください。

「いいね!」 1

その特定のトピックの内容を、ここでメタの私信(PM)に投稿してもよろしいでしょうか?

お気軽にどうぞ。特に再現手順を作成できる場合は、ぜひお願いいたします。

私も非常に類似(または関連)した問題に直面しています。

再現手順 / 原因:

  • 問題は非常に長い投稿(約10万文字)で発生します。
  • これは大規模な改訂(コンテンツの大部分が変更される場合)によって特に引き起こされます。

このような膨大な編集を保存しようとすると、バックエンドはしばしばタイムアウト(502/504)に達します。根本原因は、2つの条件が組み合わさった際に非常に高コストになる差分計算(古いバージョンと新しいバージョンの間)にあると推測しています。

このトピックをクローズします。議論は以下で継続されています