我正在使用 RSS Polling 插件导入 RSS Feed。我默认不添加任何标签。相反,计划是让用户手动添加标签。但插件会在下次拉取时删除这些标签。例如,请看
编辑:我曾以为这可能与设置 create post for category and tag changes 有关,但我已经更改了它,标签仍然被删除。例如:
编辑 2:好的,这更奇怪了。一个帖子说一些标签已被删除,但标签仍然存在……
正在运行 Discourse 3.3.0.beta3-dev ( c13f64d35b ) 和 RSS Polling 0.0.1 be7b56e。
1 个赞
也许有关联?日志中有一个重复出现的错误:
Job exception: undefined method `name' for an instance of String
/var/www/discourse/app/models/topic_embed.rb:125:in `map'
/var/www/discourse/app/models/topic_embed.rb:125:in `import'
/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:52:in `block in poll_feed'
/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:41:in `each'
/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:41:in `poll_feed'
/var/www/discourse/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/poll_feed.rb:20:in `execute'
/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform'
rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform'
/var/www/discourse/app/jobs/base.rb:288:in `each'
/var/www/discourse/app/jobs/base.rb:288:in `perform'
sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
经过进一步测试,我几乎可以肯定问题在于,当 /admin/plugins/rss_polling 上的 RSS 订阅源没有分配任何标签时,标签会被自动删除。
1 个赞
我可以重现此问题。 
我的步骤:
- 将
https://meta.discourse.org/c/bug/1.rss 添加到 RSS 轮询
- 设置用户和类别,但将标签留空(保存)
- 等待主题被拉入
- 选择几个并手动添加标签
- 等待下一次轮询
- 看到手动添加了标签的主题已被编辑以删除它们
预期: 带有手动添加标签的轮询主题不应被编辑以删除这些标签
实际: 轮询主题标签被覆盖
(/logs 中没有错误)
6 个赞
奇怪。它一直报告这个错误。一周内累积了 1344 个实例。看起来足够通用。
1 个赞
我已更新此内容,以便在 tags 为 nil 或缺失时(如 repro 中所示),tags 不会被更新:
这修复了所列的 repro
2 个赞
您好,我认为现在出现了一个新问题。我刚刚将 Discourse 更新到 3.3.0.beta4-dev(7b8863fcd5),现在有一些导入的帖子在每次轮询时都会被更新,但看不到任何差异变化。这些帖子有以下共同点:
- 它们都是通过 RSS 轮询导入的。
- 导入时它们收到一个标签,即 RSS 轮询中设置的标签。
- 我们手动添加了第二个标签。
这是一个示例差异。看不到任何更改:
对我们来说,这是一个回归。之前的 bug 可以通过为所有 RSS feed 添加一个默认标签来规避。然后可以手动添加标签而不会出现问题。现在,我们的“最新”列表被这些没有变化的重复更新所垃圾信息化。
更新:或者这可能更具体或本地化?因为并非所有手动添加了标签的主题都在被更新。我正在从一些已更新的帖子中删除并重新添加标签,以查看是否能找到某种模式。我会在此处回复任何发现。
2 个赞
好的,我可以确认这些重新出现的帖子的模式:
- 它们都是通过 RSS 轮询导入的。
- 导入时它们都获得了一个标签,即 RSS 轮询中设置的标签。
- 我们手动添加了第二个标签。
我感到困惑是因为只有一些带有附加标签的帖子会继续刷新,而不是全部,但答案很简单:RSS Feed 仍在调用它们,而较旧的帖子或 RSS Feed 中只有最近条目的帖子在逻辑上不会被触发。
如果可能,实现应该很简单:
- 如果导入的帖子是新的,则导入 RSS 轮询设置中定义的标签(如果有)。
- 如果导入的帖子不是新的,则根本不检查标签。
这样,新导入的帖子就会带有预期的标签(如果没有定义标签,则不带任何标签),而现有的帖子不会因为手动编辑的标签而发生任何更改/刷新。
您能否在有经过测试的解决方案到位之前撤销此补丁?我们的“最新”主页被这些旧条目占据,我们很幸运才刚刚开始标记,并且只有少数条目是手动标记的。否则,我现在可以删除第二个标签……
Heliosurge
(Dan DeMontmorency)
21
拉取时仍然看到它删除了标签
您可以看到“meta-hmd”被删除了。此标签是手动添加的,下次拉取时它会删除该标签。
“UploadVR”标签是在 RSS Polling Plugin 中配置的。 
正如 @RGJ 所链接的。嵌入导入发现标签已更改,并正在重新导入帖子,删除了添加的标签。
也许可以添加一个切换来忽略 discourse 主题标签的更改?
1 个赞
添加了在 RSS 轮询中禁用标签更新的选项。让我们知道这是否解决了您的用例。
5 个赞
Heliosurge
(Dan DeMontmorency)
24
1 个赞
Heliosurge
(Dan DeMontmorency)
26
我已切换回官方插件
任何不再轮询的主题应该都没问题。
在此补丁之前,正如您所报告的,旧的导入的、不再足够新的 feed 应该保持不变。
所以任何您手动添加了标签但未拉取的 feed 都没问题。
1 个赞
@Heliosurge 如果您能在此处测试修复程序,那就太好了。我们几乎每天都在添加新的信息源,对我们来说,保留 PubDate 至关重要,因为每次导入可能包含数十甚至数百个条目。相比之下,我们可以等待标签的解决方案。
Heliosurge
(Dan DeMontmorency)
31
如果您仍在添加全新的 feed,那么您知道,这些新 feed 将不会遵守 pubdate。
正如我所提到的,任何因过旧而不再抓取的旧 feed 都不会更改标签。
我不确定 RSS 主题必须有多旧才能不再排队。