En esta agradable mañana de jueves, les presento un interesante dilema. Estoy viendo lo que parece ser un contador de no leídos con un falso positivo en mi sitio.
Qué sucede
La barra de navegación superior muestra No leídos (14). Pero cuando hago clic en ella y voy a /unread, no se listan ningún tema no leído. La página indica que no hay nada más sin leer.
Otros usuarios que no son personal también están experimentando el mismo problema, aunque con diferentes conteos de no leídos.
En la aplicación de Discourse para iOS, también veo un contador de no leídos cuando no hay temas sin leer, a veces con un número diferente.
Plataforma: web de escritorio y aplicación de Discourse en iOS
El problema persiste allí, por lo que parece no ser causado por temas o personalizaciones de plugins del lado del cliente. No hay susurros en ningún tema, así que probablemente tampoco sea eso.
Tampoco puedo usar Descartar, porque no hay ningún botón de Descartar en /unread cuando la lista de no leídos está vacía.
Comportamiento esperado
Si la barra de navegación dice No leídos (14), debería ver 14 temas no leídos en /unread, o al menos algunos temas no leídos visibles.
Comportamiento real
la barra de navegación dice No leídos (14)
/unread está vacío
no hay botón de Descartar disponible
el problema persiste en Modo Seguro
Preguntas
¿Existe alguna forma conocida de reconstruir/restablecer el estado de no leídos para un usuario?
¿Existe alguna inconsistencia del lado del servidor que pueda hacer que los conteos de no leídos persistan incluso cuando /unread está vacío?
Anteriormente, pregunté a la IA en ask.discourse.org sobre este problema, y al final me aconsejó que publicara un informe de error aquí.
¿Has cambiado recientemente permisos de categorías o movido algunos temas a una categoría segura? Algo ha alterado el estado de seguimiento.
¿No querrías restablecerlo para todos los usuarios si otros están teniendo el mismo problema?
Creo que esto se puede solucionar para todos mediante la consola de Rails, pero es un poco complicado y primero tengo que averiguarlo y probarlo. Estoy en un dispositivo móvil en este momento, pero intentaré publicar una solución en un momento si nadie más lo hace.
Sí. En privado, nuestro equipo trabajó en una categoría similar a #documentación, la cual se hizo pública recientemente una vez que estuvo terminada.
Sí, efectivamente. Mi idea era probarlo primero en mí mismo y luego solucionarlo para todos. Dado que es un error tan complicado de probar (al menos para mí), no quería levantar falsas esperanzas en todos hasta tener una solución funcional.
Gracias por la confianza. Esta mañana noté la versión mensual de mayo de 2026v2026.05 y pensé que podría solucionar el problema, pero aún persiste. Estoy seguro de que el equipo está trabajando en ello. Discourse es increíble.
¡Oh, cielos! Reconozco que he revisado todos los informes de errores relacionados. Por un momento, incluso consideré simplemente ocultar la pestaña «No leídos» de la navegación e ignorarla. Pero eso no va a solucionar nada, ¿verdad? Parece que incluso me está siguiendo por aquí en Meta.
ok, este script de Rails actuará como un “marcar todo como leído” global y forzará el conteo de no_leídos de vuelta a 0 para todos los usuarios, por lo que, lamentablemente, borrará cualquier conteo legítimo de no leídos además de cualquier no leído fantasma. Podemos hacer esto con un comando SQL en Rails. Pero ten en cuenta que no soluciona el error raíz. Además, buena idea si tienes una copia de seguridad reciente a mano, pero lo probé en mi foro de desarrollo y funcionó.
cd /var/discourse ./launcher enter app rails c
pega todo el siguiente bloque y presiona Enter
sql = <<~SQL
UPDATE topic_users
SET last_read_post_number = topics.highest_post_number
FROM topics
WHERE topics.id = topic_users.topic_id
AND COALESCE(topic_users.last_read_post_number, 0) < topics.highest_post_number
AND topic_users.notification_level IN (2, 3, 4) -- Rastreo, Observando, Observando primer mensaje
SQL
# ejecutar la actualización
result = ActiveRecord::Base.connection.execute(sql)
puts "Se limpiaron correctamente #{result.cmd_tuples} temas no leídos en todo el sitio."
# forzar a los navegadores cliente a descartar su estado en caché y sincronizarse con la base de datos
MessageBus.publish("/topic-tracking-state", { clear: true })
los usuarios pueden tener que hacer una recarga forzada para ver el estado de no_leídos limpiado.
Ejecutar copia de seguridad. Descargar copia de seguridad. SSH al servidor. Ejecutar script.
Problema resuelto.
Muchas gracias @Lilly. Marcaría esto como solución si la opción estuviera disponible. En su lugar, un impulso tendrá que bastar. ¡Que tengas un buen día!
¿Con «no leídas fantasma» te refieres a que en realidad no hay nada sin leer, solo un conteo incorrecto?
Recientemente he visto casos del contrario en varias instancias de Discourse: definitivamente había mensajes sin leer y el conteo era correcto, pero la página de «no leídas» simplemente no los mostraba.
Eso suena como un error diferente al que se está discutiendo aquí, pero mi informe de error fue cerrado como duplicado de este.
No, esos temas perdidos que describí en mi informe de error tienen genuinamente nuevas publicaciones. Como dije en mi informe de error:
«no leído» es como me mantengo al día con las conversaciones, por lo que esto conlleva un alto riesgo de que simplemente me pierda por completo que hay algo a lo que debería responder.
No me importa mucho perderme el «tema cerrado», pero este error corre el riesgo de que me pierda publicaciones reales.
Solo quería añadir que también estoy experimentando este problema desde el miércoles (27 de mayo) como usuario en el foro de la Comunidad de OpenAI, tanto en iOS como en escritorio.
Añadido: esta grabación de pantalla parece muy lenta aquí. Lo siento por eso.
¡No te preocupes! Solo quería dar visibilidad al error, ya que estoy viendo el mismo problema en la Comunidad de OpenAI también. Me alegra saber que ya se está trabajando en una solución.