ArgumentError (Limite de atributos por elemento excedido) de rebake

Então, eu recompilei meus posts ontem à noite depois de configurar um CDN, e tudo correu bem, exceto por um job Jobs::ProcessPost no sidekiq que continua falhando e tentando novamente. Especificamente, ele falha com um erro Wrapped ArgumentError: Attributes per element limit exceeded. O backtrace de /logs é o seguinte…

Mensagem (13 cópias relatadas)

Exceção do job: Limite de atributos por elemento excedido

Backtrace

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.8-x86_64-linux/lib/nokogiri/html5/document.rb:85:in `parse'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.8-x86_64-linux/lib/nokogiri/html5/document.rb:85:in `do_parse'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.8-x86_64-linux/lib/nokogiri/html5/document.rb:43:in `parse'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.8-x86_64-linux/lib/nokogiri/html5.rb:31:in `HTML5'
/var/www/discourse/lib/retrieve_title.rb:21:in `extract_title'
/var/www/discourse/lib/retrieve_title.rb:91:in `block in fetch_title'
/var/www/discourse/lib/final_destination.rb:499:in `block (4 levels) in safe_get'
/var/www/discourse/lib/final_destination.rb:496:in `catch'
/var/www/discourse/lib/final_destination.rb:496:in `block (3 levels) in safe_get'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.3/lib/net/protocol.rb:498:in `call_block'

Hmm, eu usei o botão de cópia na página de logs, que parece ter truncado o backtrace. Se você precisar/quiser mais, posso conseguir para você. O que posso dizer é que ele entra no cp.post_process

cp = CookedPostProcessor.new(post, args)
cp.post_process(new_post: args[:new_post])

dentro do método execute de ProcessPost, e de lá parece mover para um post_process_oneboxes.

Agora, investiguei mais a fundo e consegui rastrear o post específico usando o console rails. Ele contém um único URL, sem imagens, sem histórico de edição.

Ok, e tendo investigado o URL em questão um pouco mais, é uma completa e total bagunça. É um post de blog, onde eles copiaram o post inteiro literalmente nas meta tags og:description e twitter:description. Mas, pior do que isso, e o que eu presumo que está causando o problema, o texto inclui alguns caracteres " que eles não escaparam, portanto, estragando completamente ambas as tags, e fazendo com que a maior parte do texto pareça atributos.

Então, o conteúdo do URL específico é lixo completo. Acho que pode ser melhor que coisas como essa sejam capturadas especificamente, em vez de travar repetidamente o job do sidekiq, não tenho certeza se é algo que você gostaria de investigar?

Caso contrário, acho que isso deixa apenas algumas perguntas da minha parte. Primeiro, ele desistirá de tentar executar este job eventualmente ou há algo que eu preciso fazer? Segundo, algo será estragado com o job não conseguindo ser executado com sucesso, tendo apenas algum texto e este único URL?

2 curtidas

Caramba!!!

Sim, devemos lidar com esses tipos de problemas automaticamente… PR aqui, deve ser mesclado em breve.

Obrigado pela depuração completa aqui!

3 curtidas

Obrigado @sam, fico feliz que tenha sido útil.

2 curtidas