El plugin RSS Polling elimina las etiquetas añadidas manualmente

Estoy importando feeds RSS con el plugin RSS Polling. No estoy agregando ninguna etiqueta por defecto. En cambio, el plan es que los usuarios agreguen las etiquetas manualmente. Pero el plugin elimina las etiquetas en la siguiente extracción. Vea por ejemplo

EDIT: Pensé que podría estar relacionado con la configuración create post for category and tag changes pero la he cambiado y las etiquetas todavía se están eliminando. Por ejemplo:

EDIT 2: Ok, esto es aún más extraño. Una publicación que dice que se han eliminado algunas etiquetas pero las etiquetas todavía están ahí…

Ejecutando Discourse 3.3.0.beta3-dev ( c13f64d35b ) y RSS Polling 0.0.1 be7b56e.

1 me gusta

¿Quizás relacionado? Hay este error recurrente en los registros:

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'

Y creo que he encontrado un patrón:

  • Si el campo “Tags” en /admin/plugins/rss_polling está vacío, las etiquetas añadidas manualmente se eliminan en la próxima consulta.
  • Si ese campo tiene una etiqueta, entonces las etiquetas añadidas manualmente parecen permanecer.

Después de probar más, estoy bastante seguro de que el problema es que las etiquetas se eliminan automáticamente cuando la fuente RSS en /admin/plugins/rss_polling no tiene ninguna etiqueta asignada.

1 me gusta

Puedo reproducir esto. :raised_hand:

Mis pasos:

  • Añadir https://meta.discourse.org/c/bug/1.rss a RSS Polling
  • Establecer usuario y categoría, pero dejar las etiquetas en blanco (guardar)
  • Esperar a que se importen los temas
  • Seleccionar un par y añadir etiquetas manualmente
  • Esperar a la siguiente encuesta
  • Ver que un tema con etiquetas añadidas manualmente ha sido editado para eliminarlas

Esperado: El tema encuestado con etiquetas añadidas manualmente no debería ser editado para eliminar esas etiquetas.
Real: Las etiquetas del tema encuestado se sobrescriben.

(Aunque no hay errores en /logs)

6 Me gusta

Extraño. Sigue informando de este error. Se acumularon 1344 instancias en una semana. Parece bastante genérico.

1 me gusta

¿Hay alguna solución en el plan a corto plazo?

Imagino que todavía es pronto. Solo me preguntaba si había alguna novedad.

Esto está sucediendo en TopicEmbed en core

4 Me gusta

He actualizado esto para que, si las etiquetas son nulas o faltan (como en el repro), las etiquetas no se actualicen:

Esto soluciona el repro como se indica.

2 Me gusta

Hola, creo que ahora hay un nuevo problema. Acabo de actualizar Discourse a 3.3.0.beta4-dev ( 7b8863fcd5 ) y ahora hay algunas publicaciones importadas que se actualizan constantemente en cada sondeo, sin que se vean cambios en las diferencias. Esto es lo que estas publicaciones tienen en común:

  • Todas se importan con RSS Polling.
  • Recibieron una etiqueta cuando se importaron, la que se estableció en RSS Polling.
  • Añadimos una segunda etiqueta manualmente.

Aquí hay un ejemplo de diferencia. No se ven cambios:

Para nosotros, esto es una regresión. El error anterior se podía evitar añadiendo una etiqueta predeterminada a todos los feeds RSS. Luego, las etiquetas se podían añadir manualmente sin problemas. Ahora nuestra lista de “Latest” se ve inundada por estas actualizaciones recurrentes sin cambios.

Actualización: ¿o tal vez es algo más específico o local? Porque no todos los temas con etiquetas añadidas manualmente se están actualizando. Estoy eliminando y volviendo a añadir etiquetas en algunas de las publicaciones actualizadas para ver si encuentro un patrón. Responderé aquí con cualquier hallazgo.

2 Me gusta

Ok, puedo confirmar este patrón para los temas que están resurgiendo:

  • Todos se importan con RSS Polling.
  • Recibieron una etiqueta cuando se importaron, la que se estableció en RSS Polling.
  • Añadimos una segunda etiqueta manualmente.

Me confundí porque solo algunos temas con una etiqueta adicional siguen siendo actualizados y no todos, pero la respuesta es simple: el feed RSS todavía los está llamando, mientras que los temas más antiguos o los temas con solo entradas recientes en el feed RSS lógicamente no se activan.

Si es posible, la implementación debería ser tan simple como esto:

  1. Si un tema importado es nuevo, importa las etiquetas definidas en la configuración de RSS Polling, si las hay.
  2. Si un tema importado no es nuevo, no compruebes las etiquetas en absoluto.

De esta manera, los temas importados nuevos vienen con las etiquetas esperadas (o ninguna, si no se definen etiquetas) y los temas existentes no reciben ningún cambio/actualización debido a etiquetas editadas manualmente.

¿Puedes revertir este parche hasta que haya una solución probada en su lugar, por favor? Nuestra página principal de Últimas novedades está ocupada por estas entradas antiguas y tenemos suerte de que acabamos de empezar a etiquetar y solo hay un puñado de entradas etiquetadas manualmente. De lo contrario, puedo eliminar las segundas etiquetas por ahora…

Todavía veo que se eliminan las etiquetas al extraer

Se puede ver que se está eliminando la etiqueta “meta-hmd”. Esta etiqueta se agregó manualmente y en la próxima extracción se eliminará.
La etiqueta “UploadVR” está configurada en el complemento RSS Polling. :slightly_frowning_face:

Como vinculó @RGJ. La importación de incrustaciones ve que las etiquetas han cambiado y está reimportando la publicación eliminando la etiqueta agregada.

¿Quizás se podría agregar un interruptor para ignorar los cambios de etiquetas de temas de Discourse?

1 me gusta

Se añadió una opción para deshabilitar las actualizaciones de etiquetas en las encuestas RSS. Háganos saber si esto resolvió su caso de uso.

5 Me gusta

¡Genial, gracias por la rápida solución!

Me preguntaba si esta PR podría ser evaluada:

1 me gusta

El parche que menciona @Heliosurge proviene de RSS Polling setting to use pubDate to set the date of imported topics. Para mí es muy relevante para este tema aquí porque encargamos esa función y tenemos esa versión de RSS Polling instalada en nuestro servidor. Tenemos miles de temas importados con fechas correctas, y temo que instalar el plugin RSS estándar para probar el parche de ayer de @featheredtoast pueda romper cosas al traer miles de cambios a fechas incorrectas o algo así.

Por lo que vale, hemos estado ejecutando la versión parcheada durante semanas y hemos importado docenas de feeds diferentes sin un solo problema. Funciona muy bien y según lo previsto.

2 Me gusta

He vuelto al plugin oficial

Cualquier tema que ya no se esté encuestando debería estar bien.

Antes de este parche, como informaste, las antiguas fuentes importadas que ya no son lo suficientemente nuevas deberían permanecer sin cambios.

Por lo tanto, cualquier fuente a la que hayas agregado etiquetas manualmente y que no se esté extrayendo estará bien.

1 me gusta

@Heliosurge si puedes probar la corrección aquí sería genial. Todavía estamos agregando nuevas fuentes casi a diario y para nosotros mantener el PubDate es crucial ya que cada importación puede tener docenas o incluso cientos de entradas. En comparación, podemos esperar la solución en las etiquetas.

Si todavía estás agregando feeds completamente nuevos. Esos nuevos feeds no tendrán en cuenta la fecha de publicación, como sabes.

Cualquier feed antiguo, como mencioné, que ya no se obtenga debido a su antigüedad. No cambiará las etiquetas.

No estoy seguro de qué antigüedad debe tener el tema RSS. Para que ya no esté en cola.

Este tema se cerró automáticamente después de 4 días. Ya no se permiten nuevas respuestas.