ArgumentError (limite di attributi per elemento superato) quando si tenta di aprire il diff di un argomento bloccato

ArgumentError (Limite di attributi per elemento superato) - quando si fa clic sull’icona “modifica” per visualizzare le differenze delle versioni dell’argomento.

Console per sviluppatori

Log

Messaggio (2 copie riportate)

ArgumentError (Limite di attributi per elemento superato)
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

È sul sito che ospitiamo per te? Dobbiamo vedere la differenza che causa il comportamento patologico.

È in hosting proprietario. Qual è il modo migliore per condividere con te la diff?

Se non c’è nulla di segreto, puoi provare a riprodurlo qui? Basta pubblicare una risposta, attendere 10 minuti e poi modificare il problema.

Non si tratta di una comunità pubblica e il materiale riguarda un prodotto beta che non è pubblico. Quindi, con tutto il rispetto sia per l’autore del materiale che per il team di Discourse, preferirei non condividerlo qui. C’è qualche altro modo semplice?

1 Mi Piace

Immagino che si tratti di dividere e conquistare? Prova a creare riproduzioni sempre più piccole finché non trovi la riga colpevole?

1 Mi Piace

Posso pubblicare il contenuto di quel particolare argomento in un messaggio privato qui in Meta?

Sentiti libero, soprattutto se riesci a creare un caso riproducibile.

Anch’io sto riscontrando un problema molto simile (o correlato).

Passaggi per riprodurre il problema / causa:

  • Il problema si verifica con post estremamente lunghi (circa 100.000 caratteri).
  • È innescato specificamente da revisioni di ampia portata (quando una grande porzione del contenuto viene modificata).

Quando si tenta di salvare una modifica di tale entità, il backend spesso va in timeout (502/504). Sospetto che la causa radice sia il calcolo della differenza (Diff) tra la versione precedente e quella nuova, che diventa estremamente oneroso quando queste due condizioni si combinano.