ArgumentError (Se superó el límite de atributos por elemento) al intentar abrir la diferencia de un tema bloqueado

ArgumentError (Límite de atributos por elemento excedido) - al hacer clic en el icono de “editar” para ver las diferencias de versiones del tema.

Consola de desarrollador

Registros

Mensaje (2 copias reportadas)

ArgumentError (Límite de atributos por elemento excedido)
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'

Rastreo de llamada

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’


Entorno

HOSTS HTTP: jai.community

¿Está esto en el sitio que alojamos para usted? Necesitamos ver el diff que causa el comportamiento patológico.

Es autoadministrado. ¿Cuál sería la mejor manera de compartir la diferencia contigo?

Si no hay nada secreto, ¿puedes intentar reproducirlo aquí? Solo publica una respuesta, luego espera 10 minutos y edita el problema.

No es una comunidad pública, y el material se refiere a un producto beta que tampoco es público. Por lo tanto, con todo el respeto tanto para el autor del material como para el equipo de Discourse, prefiero no compartirlo aquí. ¿Hay alguna otra forma sencilla?

1 me gusta

¿Supongo que dividir y conquistar? ¿Intenta crear reproducciones cada vez más pequeñas hasta encontrar la línea culpable?

1 me gusta

¿Debería publicar el contenido de ese tema en un mensaje privado para ti aquí en Meta?

Siéntete libre, especialmente si puedes crear un repro.

También estoy experimentando un problema muy similar (o relacionado).

Pasos para reproducir / causa:

  • El problema ocurre en publicaciones extremadamente largas (alrededor de 100.000 caracteres).
  • Se activa específicamente por revisiones a gran escala (cuando se cambia una gran parte del contenido).

Al intentar guardar una edición tan masiva, el backend suele alcanzar el tiempo de espera (502/504). Sospecho que la causa raíz es el cálculo de la diferencia (diff) entre la versión antigua y la nueva, lo cual se vuelve extremadamente costoso bajo estas dos condiciones combinadas.