ArgumentError (limite d'attributs par élément dépassé) lors de l'ouverture du diff d'un sujet verrouillé

ArgumentError (Limite d’attributs par élément dépassée) – lors du clic sur l’icône « modifier » pour afficher les différences de versions d’un sujet.

Console développeur

Journaux

Message (2 copies signalées)

ArgumentError (Limite d'attributs par élément dépassée)
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'

Backtrace

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'

Env

HTTP HOSTS : jai.community

Est-ce sur le site que nous hébergeons pour vous ? Nous devons voir la différence qui provoque ce comportement pathologique.

C’est auto-hébergé. Quelle serait la meilleure façon de partager la différence avec vous ?

S’il n’y a rien de secret, pouvez-vous essayer de reproduire le problème ici ? Il suffit de publier une réponse, puis d’attendre 10 minutes avant de modifier le problème.

Ce n’est pas une communauté publique, et le matériel concerne un produit bêta qui n’est pas public non plus. Donc, avec tout le respect dû à la fois à l’auteur du matériel et à l’équipe Discourse, je préfère ne pas le partager ici. Y a-t-il une autre méthode simple ?

1 « J'aime »

Je suppose qu’il faut diviser pour régner ? Essaie de créer des reproductions de plus en plus petites jusqu’à trouver la ligne coupable ?

1 « J'aime »

Devrais-je publier le contenu de ce sujet spécifique dans un MP pour vous ici dans Meta ?

N’hésitez pas, surtout si vous pouvez créer un cas reproductible.

Je rencontre également un problème très similaire (ou lié).

Étapes de reproduction / cause :

  • Le problème survient sur les articles extrêmement longs (environ 100 000 caractères).
  • Il est déclenché spécifiquement par des révisions à grande échelle (lorsqu’une énorme partie du contenu est modifiée).

Lorsque j’essaie d’enregistrer une telle modification massive, le serveur backend rencontre souvent un délai d’attente (erreur 502/504). Je soupçonne que la cause racine est le calcul de la différence (Diff) entre l’ancienne et la nouvelle version, qui devient extrêmement coûteux lorsque ces deux conditions sont combinées.

Clôture de ce sujet car la discussion se poursuit sur