rebake 的 ArgumentError (每个元素属性限制超出)

我昨晚设置了 CDN 后重新烘烤了我的帖子,一切顺利,除了 Sidekiq 中有一个 Jobs::ProcessPost 作业一直在失败和重试。具体来说,它以一个 Wrapped ArgumentError: Attributes per element limit exceeded 错误失败。来自 /logs 的回溯如下…

消息(报告了 13 份副本)

作业异常:Attributes per element limit exceeded

回溯

/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'

嗯,我使用了日志页上的复制按钮,这似乎截断了回溯。如果你需要/想要更多信息,我可以提供给你。我能说的是,它进入了 cp.post_process

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

ProcessPostexecute 方法中,然后似乎进入了 post_process_oneboxes

现在,我进行了更深入的调查,并设法通过 rails 控制台找到了特定的帖子。它包含一个 URL,没有图片,没有编辑历史。

好的,在对有问题的 URL 进行了一些进一步的调查后,它完全是一团糟。这是一篇博客文章,他们将整个帖子逐字复制到了 og:description 和 twitter:description 元标签中。但是,更糟糕的是,我猜这会导致问题,文本中包含一些未转义的“字符,因此完全破坏了这两个标签,并使大部分文本看起来像属性。

所以特定 URL 的内容是完全垃圾。我想对于这类事情最好能被特别处理,而不是反复崩溃 sidekiq 作业,不知道你是否想调查一下?

否则,我只剩下几个问题。首先,它最终会停止尝试运行此作业,还是我需要做些什么?其次,由于作业未能成功运行,只有一些文本和这个 URL,会不会有什么东西被搞砸了?

2 个赞

哎呀!!!

是的,我们应该自动处理这类问题……PR 在这里,很快就会合并。

感谢你在此处进行的详尽调试!

3 个赞

谢谢 @sam,很高兴能帮到你。

2 个赞