Feeds RSS desaparecendo misteriosamente

Usamos o plugin rss-polling para importar entradas de dezenas de feeds. De tempos em tempos, alguns feeds simplesmente desaparecem da lista. Não sabemos sob quais condições, não sabemos como, e não conseguimos encontrar nenhum registro de tal ação. Também não encontramos um padrão. Eles simplesmente desaparecem, e precisamos criar suas novas entradas novamente (quando percebemos que eles desapareceram, o que não é trivial com tantos feeds).

Existe alguma funcionalidade escrita no código que eliminaria um feed RSS sob certas condições? Existe um log que registraria quando isso acontece?

No ano passado, @blake moveu o armazenamento de backend para o banco de dados.

Acho que agora só existe um lugar que apaga feeds e seria a atualização:

Particularmente se “feed_settings” forem definidos como nada de alguma forma, então talvez um humano esteja envolvido aqui?

Com que frequência isso aconteceu?

Independentemente disso, esta atualização é um pouco arriscada porque tenta atualizar tudo de uma vez e não faz atualizações delta.

Pode ser alguma automação sua que está enviando um [] (nada) e não enviando o estado inteiro ao atualizar feeds?

3 curtidas

A única coisa que fazemos com o feed RSS é criar novos manualmente em /admin/plugins/rss_polling. Nada mais.

Notei que a ordem dos feeds RSS nessa página muda de tempos em tempos, o que já é estranho e não ajuda a depurar problemas porque a ordem cronológica de criação do feed é perdida, e a nova ordenação não parece seguir nenhuma ordenação alfabética ou numérica.

Não sabemos com que frequência esse problema ocorre porque não conseguimos detectá-lo imediatamente quando ele acontece. No melhor cenário, só podemos esperar que o proprietário do feed nos diga que novas entradas não estão aparecendo, ou percebemos nós mesmos que, digamos, um podcast semanal ficou em silêncio no fórum ultimamente.

Tenho a impressão de que esse problema pode estar relacionado a situações em que a CPU chega perto de 100%, ou algo mais no servidor atingindo a capacidade máxima. Mesmo que o agendador faça um bom trabalho ao consultar apenas 5 feeds por vez, nas análises de hospedagem podemos ver que quando os feeds RSS estão sendo atualizados, a CPU basicamente atinge 100%.

Talvez seja por isso que fóruns com apenas alguns feeds não o notam, mas se você adicionar muitos, algo pode quebrar apenas às vezes, independentemente do agendador?

Veja relacionado: Are there any upper limits to the RSS Polling plugin? - #4 by icaria36

3 curtidas

(Pensando mais a fundo)

De qualquer forma, eu me pergunto por que o Discourse deveria excluir feeds RSS em primeiro lugar, e fazê-lo silenciosamente. Se um feed RSS for problemático por algum motivo, ele poderia pulá-lo desta vez e registrar o problema. A partir daí, duas coisas poderiam acontecer:

  1. Foi um problema ocasional e as próximas execuções do agendador funcionarão bem. A entrada do log será esquecida.
  2. O problema persiste, cada pulo deixa uma entrada no log de erros e, quando alguém percebe que há um problema, os administradores podem verificar o log de erros e encontrar os detalhes.

Idealmente, os administradores receberiam algum tipo de notificação, mas entendo se isso adiciona mais trabalho a uma solução potencial. Pular em vez de excluir + entrada no log de erros já seria uma grande melhoria.

E para explicar o impacto que este problema tem em nosso projeto. Temos um portal de podcasts independentes, eles nos contatam para serem agregados, nós criamos um canal (subcategoria) onde seus programas são importados e onde os ouvintes podem curtir e comentar… Isso causa uma péssima impressão sobre nosso projeto e a plataforma Discourse quando eles percebem que paramos de agregá-los e temos que responder que, de alguma forma, o feed deles foi excluído…

1 curtida

:grimacing: Este código “temporário” que está aqui há mais de um ano é provavelmente o culpado. Vou dar uma olhada.

5 curtidas

Vamos começar com esta correção por enquanto. Não estou dizendo que esta é a causa de feeds serem misteriosamente excluídos, mas adicionar pelo menos uma caixa de diálogo de confirmação antes de realmente excluir um feed é um começo.

Trabalharei mais tarde em mais melhorias quando tiver mais tempo. Quero adicionar uma interface de usuário adequada para editar/salvar feeds individuais em vez de apenas atualizar/salvar TODOS eles a cada edição.

@icaria36 se você atualizar seu plugin, você receberá esta última alteração. Entrarei em contato novamente quando tiver mais melhorias prontas.

3 curtidas

Obrigado pelo patch! Fiz o upgrade imediatamente para a nova versão e adicionei os feeds RSS ausentes (cerca de 20!), e hoje verifiquei e… os feeds foram removidos silenciosamente novamente. :frowning: Não sei quando, não sei como, ainda não sei quais, mas faltam cerca de uma dúzia. Não vi nenhum diálogo perguntando sobre os feeds antes de removê-los, ou qualquer coisa. Além disso, tomei cuidado para readicionar os feeds RSS quando as CPUs do servidor estavam bem, evitando o tempo de polling RSS, apenas para remover esse fator da equação.

Tenho a impressão de que há uma conexão entre o fato de a lista mudar sua ordenação e o fato de os feeds desaparecerem. O que quer que cause a mudança de ordenação pode ser traumático o suficiente para também ter baixas. Uma pergunta útil poderia ser: por que a lista muda sua ordenação em primeiro lugar? Feeds desaparecendo enquanto a ordenação da lista permanece a mesma seria igualmente ruim, mas pareceria… mais limpo. :slight_smile:

Este problema é tedioso de corrigir do nosso lado (descobrir quais feeds estão faltando antes que seus proprietários percebam e perguntem + readicionar as entradas de feed), mas é ainda mais tedioso de detectar, porque a única maneira é verificar feed por feed de categoria para ver quais estão faltando – ou pelo menos contar manualmente quantos feeds existem em comparação com a última vez que contamos.

Um grande economizador de tempo para depuração seria ter uma string mostrando o número total de feeds em /admin/plugins/rss_polling, ou seja, apenas “N feeds”. E/ou numerar a lista.

1 curtida

Ah, que chato, eu imaginava, obrigado pela atualização. Agora que as festas acabaram, vou trabalhar em uma solução adequada para isso.

1 curtida

Melhorei bastante a interface do administrador com minhas últimas alterações e isso deve resolver o problema de feeds RSS sendo misteriosamente removidos.

Agora existe uma lógica individual de criação, atualização e exclusão em vez de tentar atualizar todos os feeds sempre que algo era modificado. Deve funcionar muito melhor agora.

2 curtidas

Muito obrigado pela sua ação rápida! Farei o upgrade esta noite, certificarei-me de que todos os nossos feeds estejam ativados e reportarei aqui se houver algo (esperançosamente nada!).

1 curtida

Uau, isso é muito melhor! Cada feed é editado individualmente, salvando uma alteração de cada vez. Salvar um novo feed é uma ação instantânea. Antes, quando você tinha muitos feeds, adicionar um novo feed e pressionar o ícone de salvar significava alguns segundos de processamento antes que a lista completa fosse atualizada. Isso parece sólido e confiável. Muito obrigado!

Vou esperar algumas semanas para verificar se nenhum feed foi perdido.

Algumas sugestões para melhorar a interface do usuário, caso sejam úteis e cheguem em um bom momento:

O “+” para adicionar um novo feed está no topo, mas a nova linha é adicionada na parte inferior. Se a lista de feeds for maior que a tela, o usuário clica no “+” e não vê nada acontecendo. Eu conheço bem esta página e, no início, pensei que o botão estava quebrado. Então pensei em verificar o final da lista e lá havia uma nova linha, esperando, como antes.

  • Adicionar a nova linha no início da lista, logo abaixo do botão “+”, poderia ser uma boa alternativa. Se isso colocar o novo feed no topo da lista, isso também é bom se ele for o primeiro no agendador. Novos feeds têm maiores chances de trazer mais trabalho e coisas para verificar do que os estabelecidos.

Existem algumas strings “Feed Settings” e “Discourse Settings” que parecem estar apenas flutuando. “Feed Settings” parece redundante, dado que a lista está logo abaixo e é autoexplicativa. “Discourse Settings” deveria ser um link para /admin/site_settings/category/plugins?filter=plugin%3Adiscourse-rss-polling? Ou talvez sejam abas para duas subpáginas diferentes?

  • Uma alternativa poderia ser simplesmente removê-las.

2 curtidas

Legal! :slight_smile:

Sim, bom ponto. Vou me lembrar disso. Temos este tópico novo sobre Creating consistent admin interfaces e acho que algumas melhorias no plugin rss-polling virão disso. Provavelmente imagino que criaremos uma tela de edição separada, como fazemos para outros plugins, em vez de editar as coisas inline.

Sim, obrigado por apontar isso. Posso ver como isso é confuso. “Feed Settings” é um rótulo para as duas primeiras colunas, indicando que essas colunas afetam o Feed RSS. O rótulo “Discourse Settings” é para as últimas 3 colunas, indicando que quando você as modifica, elas afetam coisas no Discourse.

3 curtidas

Faz uma semana, adicionamos algumas dezenas de feeds RSS além das mais de cem que já tínhamos, e a lista está muito sólida agora. Não detectamos nenhum problema!

3 curtidas

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