Plugin de Polling RSS remove tags adicionados manualmente

Estou importando feeds RSS com o plugin RSS Polling. Não estou adicionando nenhuma tag por padrão. Em vez disso, o plano é que os usuários adicionem as tags manualmente. Mas o plugin remove as tags na próxima atualização. Veja, por exemplo

EDIT: Pensei que poderia estar relacionado com a configuração create post for category and tag changes, mas alterei e as tags continuam sendo excluídas. Por exemplo:

EDIT 2: Ok, isso é ainda mais estranho. Um post que diz que algumas tags foram removidas, mas as tags ainda estão lá…

Executando Discourse 3.3.0.beta3-dev ( c13f64d35b ) e RSS Polling 0.0.1 be7b56e.

1 curtida

Talvez relacionado? Há este erro recorrente nos logs:

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'

E acho que encontrei um padrão:

  • Se o campo “Tags” em /admin/plugins/rss_polling estiver vazio, as tags adicionadas manualmente são removidas na próxima verificação.
  • Se esse campo tiver uma tag, então as tags adicionadas manualmente parecem permanecer.

Após testar mais, tenho quase certeza de que o problema é que as tags são removidas automaticamente quando o feed RSS em /admin/plugins/rss_polling não tem nenhuma tag atribuída.

1 curtida

Eu consigo reproduzir isso. :raised_hand:

Meu passo a passo:

  • Adicionar https://meta.discourse.org/c/bug/1.rss ao RSS Polling
  • Definir usuário e categoria, mas deixar as tags em branco (salvar)
  • Aguardar os tópicos serem importados
  • Selecionar alguns e adicionar tags manualmente
  • Aguardar a próxima consulta
  • Ver um tópico com tags adicionadas manualmente ter sido editado para removê-las

Esperado: O tópico consultado com tags adicionadas manualmente não deve ser editado para remover essas tags
Real: As tags do tópico consultado são sobrescritas

(Nenhum erro em /logs, no entanto)

6 curtidas

Estranho. Ele continua relatando este erro. 1344 instâncias acumuladas em uma semana. Parece genérico o suficiente.

1 curtida

Existe alguma correção no roadmap próximo?

Imagino que ainda seja cedo. Só queria saber se há alguma novidade.

Isso está acontecendo em TopicEmbed no core

4 curtidas

Eu atualizei isso para que, se as tags forem nulas ou ausentes (como estão no repro), as tags não serão atualizadas:

Isso corrige o repro conforme listado

2 curtidas

Olá, acho que há um novo problema agora. Acabei de atualizar o Discourse para 3.3.0.beta4-dev ( 7b8863fcd5 ) e agora há algumas postagens importadas que continuam sendo atualizadas a cada poll, sem alterações de diff visíveis. Isso é o que essas postagens têm em comum:

  • Todas foram importadas com RSS Polling.
  • Receberam uma tag quando foram importadas, a definida no RSS Polling.
  • Adicionamos uma segunda tag manualmente.

Aqui está um exemplo de diff. Nenhuma alteração visível:

Para nós, isso é uma regressão. O bug anterior poderia ser contornado adicionando uma tag padrão a todos os feeds RSS. Em seguida, as tags poderiam ser adicionadas manualmente sem problemas. Agora nossa lista de Últimas está sendo inundada por essas atualizações recorrentes sem alterações.

Atualizado: ou talvez seja algo mais específico ou local? Porque nem todos os tópicos com tags adicionadas manualmente estão sendo atualizados. Estou removendo e readicionando tags em algumas das postagens atualizadas para ver se encontro um padrão. Responderei aqui com quaisquer descobertas.

2 curtidas

Ok, posso confirmar este padrão para os tópicos que estão ressurgindo:

  • Todos eles são importados com RSS Polling.
  • Receberam uma tag quando foram importados, a definida no RSS Polling.
  • Adicionamos uma segunda tag manualmente.

Eu estava confuso porque apenas alguns tópicos com uma tag adicional continuam sendo atualizados e não todos eles, mas a resposta é simples: o feed RSS ainda os está chamando, enquanto tópicos mais antigos ou tópicos com apenas entradas recentes no feed RSS logicamente não estão sendo acionados.

Se possível, a implementação deve ser tão simples quanto isto:

  1. Se um tópico importado for novo, importe as tags definidas nas configurações de RSS Polling, se houver.
  2. Se um tópico importado não for novo, não verifique as tags.

Desta forma, os novos tópicos importados vêm com as tags esperadas (ou nenhuma, se nenhuma tag for definida) e os tópicos existentes não sofrem alterações/atualizações por causa de tags editadas manualmente.

Você pode reverter este patch até que uma solução testada esteja em vigor, por favor? Nossa página principal “Latest” está ocupada por essas entradas antigas e temos sorte que acabamos de começar a marcar e há apenas um punhado de entradas marcadas manualmente. Caso contrário, posso remover as segundas tags por enquanto…

Ainda estou vendo a remoção de tags ao importar

Você pode ver que a tag “meta-hmd” está sendo removida. Esta tag foi adicionada manualmente e na próxima importação ela é removida.
A tag “UploadVR” é configurada no plugin RSS Polling. :slightly_frowning_face:

Como @RGJ linkou. A importação de incorporação está vendo que as tags mudaram e está reimportando a postagem, removendo a tag adicionada.

Talvez um alternador possa ser adicionado para ignorar as alterações de tags de tópicos do Discourse?

1 curtida

Adicionada uma opção para desabilitar atualizações de tags em pesquisas RSS. Informe-nos se isso resolveu seu caso de uso.

5 curtidas

Incrível, obrigado pela correção rápida!

Gostaria de saber se este PR pode ser avaliado:

1 curtida

O patch que @Heliosurge menciona vem de RSS Polling setting to use pubDate to set the date of imported topics. Para mim, é muito relevante para este tópico aqui porque encomendamos esse recurso e temos essa versão do RSS Polling instalada em nosso servidor. Temos milhares de tópicos importados com datas corretas, e temo que instalar o plugin RSS padrão para testar o patch de ontem de @featheredtoast possa quebrar as coisas, trazendo milhares de alterações para datas incorretas ou algo assim.

Pelo que vale, estamos executando a versão corrigida há semanas e importamos dezenas de feeds diferentes sem um único problema. Funciona muito bem e como pretendido.

2 curtidas

Voltei para o plugin oficial

Quaisquer tópicos que não estejam mais sendo pesquisados devem ficar bem.

Antes desta correção, como você relatou, os feeds importados antigos que não são mais novos o suficiente devem permanecer inalterados.

Portanto, quaisquer feeds aos quais você adicionou tags manualmente que não estão sendo puxados ficarão bem.

1 curtida

@Heliosurge se você puder testar a correção aqui, seria ótimo. Ainda estamos adicionando novos feeds quase diariamente e, para nós, manter o PubDate é crucial, já que cada importação pode ter dezenas ou até centenas de entradas. Em comparação, podemos esperar pela solução nas tags.

Se você ainda estiver adicionando feeds totalmente novos. Esses novos feeds não terão o pubdate respeitado, como você sabe.

Quaisquer feeds antigos, como mencionei, que não estão mais sendo buscados devido à idade. Não mudarão as tags.

Não tenho certeza de quão antigo o tópico RSS precisa ser. Para que ele não esteja mais na fila.

Este tópico foi fechado automaticamente após 4 dias. Novas respostas não são mais permitidas.