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?