ArgumentError (Se superó el límite de atributos por elemento) de rebake

Anoche volví a procesar mis publicaciones después de configurar una CDN, y todo salió bien excepto por un trabajo Jobs::ProcessPost en Sidekiq que sigue fallando y reintentando. Específicamente, falla con un error

Wrapped ArgumentError: Attributes per element limit exceeded

El rastreo del error de /logs es el siguiente…

Mensaje (13 copias reportadas)

Excepción del trabajo: Attributes per element limit exceeded

Rastreo del error

/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, usé el botón de copiar en la página de logs, que parece haber truncado el rastreo del error. Si necesitas/quieres más, puedo conseguirlo. Lo que puedo decir es que entra en cp.post_process

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

dentro del método execute de ProcessPost, y desde ahí parece pasar a post_process_oneboxes.

Ahora, investigué más a fondo y logré rastrear la publicación específica usando la consola de Rails. Contiene una sola URL, sin imágenes, sin historial de edición.

De acuerdo, y habiendo investigado la URL en cuestión un poco más, es una basura completa y absoluta. Es una publicación de blog, donde han copiado toda la publicación textualmente tanto en las etiquetas meta og:description como en twitter:description. Pero, peor que eso, y lo que supongo que está causando el problema, el texto incluye algunos caracteres " que no han escapado, por lo tanto, arruinando por completo ambas etiquetas y haciendo que la mayor parte del texto parezca atributos.

Así que el contenido de la URL específica es basura completa. Supongo que podría ser mejor que cosas como esta se detecten específicamente, en lugar de que el trabajo de Sidekiq se bloquee repetidamente, ¿no sé si es algo que te gustaría investigar?

De lo contrario, solo me quedan un par de preguntas. Primero, ¿dejará de intentar ejecutar este trabajo eventualmente o hay algo que deba hacer? Segundo, ¿hay algo que se arruinará si el trabajo no se ejecuta con éxito, teniendo solo algo de texto y esta única URL?

2 Me gusta

¡Uy!

Sí, deberíamos solucionar este tipo de problemas automáticamente… PR aquí, debería fusionarse pronto.

¡Gracias por la depuración exhaustiva aquí!

3 Me gusta

Gracias @sam, me alegra que haya sido de ayuda.

2 Me gusta