ArgumentError (Attribut-Limit pro Element überschritten) von rebake

Ich habe gestern Abend nach der Einrichtung eines CDN meine Beiträge neu gebacken, und alles lief gut, bis auf einen Jobs::ProcessPost-Job in Sidekiq, der immer wieder fehlschlägt und wiederholt wird. Genauer gesagt, schlägt er mit einem Wrapped ArgumentError: Attributes per element limit exceeded Fehler fehl. Der Backtrace von /logs sieht wie folgt aus…

Nachricht (13 Kopien gemeldet)

Job-Ausnahme: 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, ich habe den Kopieren-Button auf der Log-Seite verwendet, was den Backtrace anscheinend abgeschnitten hat. Wenn Sie mehr benötigen, kann ich ihn Ihnen besorgen. Was ich sagen kann ist, dass er in cp.post_process innerhalb der execute-Methode von ProcessPost gelangt.

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

und von dort scheint er zu post_process_oneboxes zu wechseln.

Nun, ich habe tiefer recherchiert und konnte den spezifischen Beitrag über die Rails-Konsole ausfindig machen. Er enthält eine einzige URL, keine Bilder, keine Bearbeitungshistorie.

Okay, und nachdem ich die betreffende URL weiter untersucht habe, ist sie völliger Müll. Es ist ein Blogbeitrag, bei dem sie den gesamten Beitrag wortwörtlich in die Meta-Tags og:description und twitter:description kopiert haben. Aber schlimmer noch, und was ich als Ursache des Problems vermute, der Text enthält einige " Zeichen, die sie nicht escaped haben, wodurch beide Tags völlig ruiniert werden und der größte Teil des Textes wie Attribute aussieht.

Der Inhalt der spezifischen URL ist also kompletter Müll. Ich schätze, es wäre besser, wenn Dinge wie diese speziell aufgegriffen würden, anstatt den Sidekiq-Job wiederholt abstürzen zu lassen. Ich bin mir nicht sicher, ob das etwas ist, das Sie sich ansehen möchten?

Ansonsten bleiben mir nur noch ein paar Fragen. Erstens, wird er irgendwann aufhören zu versuchen, diesen Job auszuführen, oder muss ich etwas tun? Zweitens, wird irgendetwas durcheinander geraten, wenn der Job nicht erfolgreich ausgeführt werden kann, nur mit etwas Text und dieser einen URL?

2 „Gefällt mir“

Autsch!!!

Ja, wir sollten diese Art von Problemen automatisch behandeln… PR hier, sollte bald zusammengeführt werden.

Danke für das gründliche Debugging hier!

3 „Gefällt mir“

Danke @sam, freut mich, dass es hilfreich war.

2 „Gefällt mir“