ArgumentError (limite di attributi per elemento superato) da rebake

Ho rifatto il rebake dei miei post ieri sera dopo aver impostato un cdn, e tutto è andato bene tranne un job Jobs::ProcessPost in sidekiq che continua a fallire e a riprovare. Nello specifico, fallisce con un errore

Wrapped ArgumentError: Attributes per element limit exceeded

L’eccezione dal /logs è la seguente…

Message (13 copies reported)

Job exception: Attributes per element limit exceeded

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, ho usato il pulsante copia nella pagina dei log, che sembra aver troncato la backtrace. Se hai bisogno/vuoi di altro, posso procurartelo. Quello che posso dire è che entra in cp.post_process

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

all’interno del metodo execute di ProcessPost, e da lì sembra passare a post_process_oneboxes.

Ora, ho indagato più a fondo e sono riuscito a rintracciare il post specifico tramite la console rails. Contiene un singolo url, nessuna immagine, nessuna cronologia di modifiche.

Ok, e avendo indagato ulteriormente sull’url in questione, è una completa e totale schifezza. È un post di un blog, dove hanno copiato l’intero post verbatim sia nei meta tag og:description che twitter:description. Ma, peggio ancora, e quello che presumo stia causando il problema, il testo include alcuni caratteri " che non hanno escapato, quindi rovinando completamente entrambi questi tag, e facendo apparire la maggior parte del testo come attributi.

Quindi il contenuto dell’url specifico è spazzatura completa. Immagino che sia meglio che cose come queste vengano individuate specificamente, invece di far crashare ripetutamente il job di sidekiq, non sono sicuro se sia qualcosa che potresti voler esaminare?

Altrimenti, credo che mi rimangano solo un paio di domande. Primo, smetterà di provare a eseguire questo job alla fine o c’è qualcosa che devo fare? Secondo, ci sarà qualcosa che verrà compromesso con il job che non riesce a essere eseguito con successo, avendo solo del testo e questo unico url?

2 Mi Piace

Accidenti!!!

Sì, dovremmo gestire automaticamente questi tipi di problemi… PR qui, dovrebbe essere unito presto.

Grazie per il debug approfondito qui!

3 Mi Piace

Grazie @sam, sono contento che sia stato d’aiuto.

2 Mi Piace