Marcadores desaparecidos y comportamiento esperado de /bookmarks

Nuestra comunidad ha informado que, después de actualizar a Discourse 3.0 hace aproximadamente 2 meses, sus marcadores a veces desaparecen misteriosamente. He limitado las quejas a usuarios que usan principalmente /bookmarks (y no /my/activity/bookmarks); existe un problema de usabilidad relacionado entre ambos, pero llegaré a eso más tarde.

Ahora mismo estoy mayormente confundido sobre cuál es el comportamiento esperado de /bookmarks, ya que no tienen todos los marcadores del usuario (como se enumera en /my/activity/bookmarks). ¿Por qué es así? Para mi propia cuenta, la diferencia es de casi 1/3 de marcadores faltantes: ¿no deberían estas dos secciones listar esencialmente la misma cantidad de marcadores/temas?

Pensé que quizás /bookmarks solo admitía publicaciones marcadas (y no temas), pero ese no parece ser el caso: nuestros usuarios marcan consistentemente una publicación/tema, lo ven bien en /bookmarks durante unas horas o días, y luego simplemente… desaparece. :confused: Si eliminan el marcador, lo marcan de nuevo, aparece por un tiempo y luego desaparece nuevamente. Para ser claros, los marcadores siempre se muestran bien en /my/activity/bookmarks, por lo que el marcador existe, pero por alguna razón no se muestra en /bookmarks después de un tiempo. Debe haber una diferencia entre el contenido de las dos secciones, pero no la veo. ¿Qué me estoy perdiendo? :thinking:


Ahora, la razón por la que esto es particularmente molesto para nuestros usuarios es que encuentran /my/activity/bookmarks inutilizable para su caso de uso principal, que es encontrar qué temas marcados tienen actualizaciones (dentro de una categoría en particular, o simplemente en todo el foro).

Puedo ver mucha funcionalidad agradable en la interfaz de /my/activity/bookmarks, pero todavía no cumple su propósito principal: ser capaz de ordenar por actividad reciente mientras se ven qué temas tienen actualizaciones (número de no leídos). Sería genial si la ordenación funcionara allí también y si se mostrara el número de publicaciones no leídas en cada tema, pero no estoy seguro de cómo funcionaría la funcionalidad para filtrar los marcadores por categoría en /my/activity/bookmarks, por lo que quizás esté justificado que también exista /bookmarks.

De todos modos, quizás estos sean dos problemas separados (¿tal vez un error (?) y un problema de UX?), pero están relacionados: he estado presionando a la comunidad para que evite los “marcadores que desaparecen” usando /my/activity/bookmarks en su lugar, pero para lo que lo están usando, realmente no funciona. Quizás si entendemos los marcadores que “desaparecen”, podamos encontrar una solución alternativa: entonces, ¿por qué no se muestran todos los marcadores en /bookmarks?

5 Me gusta

He reducido parte de esta diferencia al hecho de que /bookmarks no incluye mensajes privados marcados y si un tema tiene varias publicaciones marcadas, muestra el tema solo una vez en /bookmarks.

Sin embargo, todavía faltan marcadores. Varios de nuestros miembros tienen temas que se muestran en /my/activity/bookmarks que no siempre se muestran en /bookmarks. Énfasis en siempre porque inicialmente siempre lo hacen, hasta que eventualmente desaparecen horas/días después. :anguished:

Nuevamente, esto solo comenzó a suceder cuando actualizamos a Discourse 3.0, así que sospecho que es un error.

No podemos marcar publicaciones, solo temas :thinking:

Entiendo que puedes marcar publicaciones específicas; incluso varias publicaciones sobre el mismo tema:

4 Me gusta

Tu entendimiento es realmente válido y sólido. El mío no lo es.

¿Cuándo demonios obtuvimos eso?

Esto, junto con la marcación de mensajes de chat (que solo funciona cuando el plugin de chat está habilitado) ha existido durante algún tiempo, al menos desde FEATURE: Promote polymorphic bookmarks to default and migrate (#16729) · discourse/discourse@fcc2e7e · GitHub .

Este es el quid del problema realmente. Todavía tenemos esta antigua ruta /bookmarks, que es algo útil debido a la ordenación por no leídos/actividad, pero le faltan elementos clave de la nueva ruta, y también es probable que la consulta que utiliza tenga algunos problemas con los marcados de publicaciones/temas y no muestre marcados de chat en absoluto.

Esto tiene sentido técnicamente ya que es solo una lista de temas, no una lista de publicaciones, es una de las principales diferencias entre la ruta antigua y la nueva.

No estoy seguro de lo que necesitamos hacer aquí, lo investigaré más y lo discutiré internamente. No es ideal tener ambas rutas, sería mejor si la nueva pudiera hacer la función que falta de la antigua.

1 me gusta

Me doy cuenta ahora de que quizás debería haber dividido mi tema en dos: uno para UX y otro para Bug, ya que mi problema principal (desaparición de marcadores) está siendo eclipsado por el de usabilidad.

Mientras tanto, he estado investigando la función de marcadores y he encontrado otro error, pero todavía no entiendo por qué los marcadores desaparecen aleatoriamente de /bookmarks. Parece ser más común con algunos temas que con otros por alguna razón, pero no he encontrado un patrón común. Para mí, lo realmente extraño es que después de marcar algo, parece mostrarse bien en /bookmarks durante un número arbitrario de horas/días, hasta que desaparece de allí y solo se “soluciona” eliminando el marcador y volviéndolo a marcar.

Para ser claro, este no es un problema con la configuración de un recordatorio de marcador para eliminar el marcador: no hay recordatorios involucrados, y los marcadores no se están eliminando (todavía se muestran en /my/activity/bookmarks), solo faltan en /bookmarks después de un tiempo.

2 Me gusta

He movido esto a Bug, ya que Support no era ninguna de estas dos, con la esperanza de que reciba más atención aquí.

Disculpas por el reflote indirecto, pero tenemos un buen número de usuarios frustrados, muy descontentos con esto. Quizás el hecho de que /bookmarks no esté habilitado por defecto (es decir, visible en la interfaz de usuario) reduce algo la exposición a este error, pero no puedo imaginar que esto sea específico de nuestro foro.

1 me gusta

Solo para decir que no te estamos ignorando. :slight_smile: Simplemente estamos viendo la mejor manera de manejarlo. Esperamos tener más noticias para ti pronto. :crossed_fingers:

1 me gusta

Este problema suena frustrante, pero aún no he podido reproducirlo y todavía no se me ocurren buenas ideas sobre qué podría causarlo.

Voy a ignorar el problema de UX por ahora y centrarme en el error.

Voy a empezar por reiterar el problema:

Pasos teóricos para reproducir, pero no con un 100% de certeza:

  1. Empieza sin marcadores
    • Ve a /bookmarks y verifica que no hay temas en la lista
    • Ve a /my/activity/bookmarks y verifica que no hay marcadores en la lista
  2. Añade marcadores a un número de publicaciones y temas. (Por ejemplo, 15 marcadores en 10 temas únicos)
    • No creemos que los recordatorios estén en juego aquí, ¿pero quizás lo estén?
    • Todavía no sabemos si importa si marcas una publicación o un tema
  3. Toma nota mental de cuántos temas únicos se han marcado
  4. Ve a /bookmarks y verifica que hay 10 temas en la lista
  5. Ve a /my/activity/bookmarks y verifica que hay 15 elementos en la lista de 10 temas
  6. Espera
  7. Vuelve a /my/activity/bookmarks y verifica que todavía hay 15 elementos en la lista de 10 temas
  8. Ve a /bookmarks y comprueba que hay menos de 10 temas en la lista

Si alguien pudiera empezar con un sitio nuevo y reproducir esto con mayor certeza, ayudaría mucho a identificar el problema aquí.

En lugar de eso, si alguien ve el problema, solo con estos pasos, quizás podamos aconsejar sobre algunos pasos de depuración para ayudar a identificar el problema:

  1. Ve a /my/activity/bookmarks y desplázate hasta el final.
  2. Cuenta el número de temas únicos (N)
  3. Ve a /bookmarks y desplázate hasta el final.
  4. Comprueba que hay menos de N temas en la lista
1 me gusta

Gracias por intentarlo, sé que esto no es lo más emocionante de la lista de errores a corregir. :sweat_smile:

Sí, esos son prácticamente los pasos correctos para llegar allí, con algunas notas menores que mencionaré más adelante.

Habiendo dicho eso, debido a la naturaleza aleatoria del problema (ocurre con un tema aleatorio en un momento dado, desapareciendo después de un tiempo arbitrario) puede ser difícil reproducirlo simplemente preparando el escenario con esos pasos, ya que parece requerirse un uso regular y no está claro si existe un desencadenante o cuál es (que podría ser el tiempo): No he podido reproducir el error yo mismo bajo demanda y los usuarios que informan de esto son mucho más activos que yo en el uso de /bookmarks.

Sin embargo, tengo informes de varios usuarios diferentes afectados por esto, lo cual he verificado a través de la suplantación de cuentas. He pedido a algunos que no marquen como favoritos al menos algunos de esos temas que desaparecieron de /bookmarks, por lo que, aunque no puedo reproducirlo bajo demanda, todavía tengo acceso a cuentas donde esto está sucediendo y comparar /bookmarks y /my/activity/bookmarks muestra las diferencias.

Aunque no puedo proporcionar acceso de administrador a nuestro foro, estoy feliz de ejecutar cualquier consulta SQL o solicitudes a la API de Discourse de nuestra instancia (incluso como los usuarios que experimentan esto) si eso ayuda. Por favor, envíeme un mensaje privado para obtener los detalles de nuestro foro si alguien quisiera echar un vistazo.

Jugué brevemente con los puntos finales /bookmarks.json y /my/activity/bookmarks.json pero no llegué muy lejos: parece que la página /bookmarks ya se carga con la primera página de resultados y solo accede al punto final para obtener más páginas, a diferencia de /my/activity/bookmarks que parece obtener todos los datos de marcadores del punto final. Por lo tanto, no pude comparar las respuestas de la API.

No soy un desarrollador de Ruby, pero intenté averiguar dónde en el código aterrizan esos 2 puntos finales para tratar de comprender las diferencias, pero como no estoy familiarizado con la pila tecnológica, me perdí en el controlador y solo encontré UsersController#bookmarks.

Ahora, algunos comentarios sobre los pasos, posiblemente no muy relevantes, solo para ser explícito.

Eso es probablemente correcto, pero no puedo confirmarlo ya que todos los usuarios afectados en nuestro foro son usuarios antiguos con muchos marcadores existentes y fue la actualización a la versión 3.0 lo que trajo esto. Pero, como el problema se repite al eliminar un marcador y volver a agregarlo, supongo que si se comienza con una pizarra en blanco, también sucedería. Un solo informante dijo que era más común justo después de la actualización y que ha sido menos frecuente… pero podría ser que simplemente estén perdiendo marcadores sin darse cuenta. :sweat_smile:

He verificado con un par de usuarios que han sido lo suficientemente pacientes como para ayudar a entender esto y me dijeron:

  • ambos siempre marcan temas, no publicaciones
  • nunca usan los recordatorios en los marcadores.

Supongo que esto no significa que no sucedería con publicaciones y recordatorios, solo que no parece depender de eso.

Pequeña observación solo para mencionar que /my/activity/bookmarks también puede mostrar marcadores de mensajes privados, por lo que una N diferente también puede provenir de eso (algo que me confundió en algún momento).


Nuevamente, estoy feliz de ejecutar consultas SQL, solicitudes de API o proporcionar más información si es de ayuda. Soy plenamente consciente de que es complicado depurar esto debido a su comportamiento aleatorio, pero es por eso que también frustra a los usuarios.

1 me gusta

Una teoría es que quizás topic_users.bookmarked se está desincronizando de alguna manera. Si tienes un tema problemático identificado, ¿puedes intentar consultar la tabla topic_users para esa combinación de usuario/tema que encuentres y ver si bookmarked es verdadero o falso?

Además, tengo curiosidad por saber si la nueva función experimental /filter muestra los temas “perdidos” con in:bookmarked, por ejemplo, Discourse Meta. ¿Puedes probar eso también y hacérnoslo saber?

1 me gusta

Sí, ese parece ser el caso.

Investigué uno de los marcadores “faltantes” y topic_users.bookmarked estaba configurado como falso para él. Este tema no aparece en /bookmarks, pero sí en /my/activity/bookmarks.

Y no estoy seguro de si es relevante, pero topic_users.last_posted_at para ese registro tiene una fecha de casi un mes (aproximadamente cuando desapareció), mientras que el tema en cuestión tiene publicaciones casi a diario desde entonces.

De todos modos, no estoy seguro de qué afecta a esa bandera bookmarked, pero supongo que es sospechosa.

¿Hay algo más que pueda comprobar?

Me encantaría probarlo, pero estamos en la versión estable (3.0.3), así que aún no la tenemos.

2 Me gusta

Esto es muy útil. Gracias. Si tienes una idea de qué versión era antes de actualizar a la 3.0.3, eso también nos ayudaría a aislar cuándo se introdujo el error.

No puedo garantizar cuándo podremos priorizar esto, pero creo que tenemos algo con lo que trabajar cuando empecemos.

2 Me gusta

Siempre hemos estado en la rama estable, por lo que probablemente estábamos en la versión 2.8.14 antes. Actualizamos el 11 de marzo, probablemente a la versión 3.0.1, y la primera queja surgió el 18 de marzo, así que supongo que en teoría también podría ser hasta la versión 3.0.2. Por lo tanto, me temo que hubo bastantes lanzamientos beta de la versión 2.9 en el medio.

Si hay algún registro en el sistema de archivos para inferir versiones anteriores, puedo verificarlo, pero 2.8.14...3.0.2 debería ser correcto.


No estoy seguro de si esto es de ayuda, ya que no estoy familiarizado con el esquema, pero ejecuté la siguiente consulta:

SELECT
  topic_users.user_id,
  topic_users.topic_id
FROM
  bookmarks,
  topic_users
WHERE
  bookmarks.user_id = topic_users.user_id
  AND bookmarkable_type = 'Topic'
  AND bookmarks.bookmarkable_id = topic_users.topic_id
  AND topic_users.bookmarked = false;

y obtuve más de 3000 coincidencias.

Supongo que se puede ejecutar algo equivalente en cualquier sistema de producción para encontrar algunas marcadores “faltantes”, lo que con suerte nos acercará un paso más a la reproducción del problema. Disculpen si estoy diciendo lo obvio, solo intento ser útil. :sweat_smile:

2 Me gusta

En cualquier caso, ahora estamos en la versión 3.1.2 y el problema aún persiste.

Los usuarios informan que algunos marcadores “desaparecen” hasta 5 veces al día (después de volver a marcarlos cada vez). Tal como está, la funcionalidad está demasiado rota para ser utilizada, y no hay una buena alternativa que proporcione el mismo nivel de funcionalidad.

Ahora que hay una forma de reproducirlo (mediante una consulta SQL) y un rango de versiones en las que se introdujo el error, ¿puedo tener alguna esperanza de que esto se aborde en algún momento?

Oh, ahora que estás en la versión 3.1.2, la próxima vez que veas esto, ¿podrías comprobar si esos temas también faltan en /filter o si aparecen ahí?

Creo que saber la respuesta a esa pregunta nos ayudará a decidir qué hacemos aquí.

3 Me gusta

He probado con la función /filter y parece que el problema también se manifiesta con una búsqueda in:bookmarked incluida.

Debido a la naturaleza aleatoria de cuándo desaparecen, probé esto primero encontrando un marcador “ofensor” usando la consulta SQL que publiqué anteriormente y luego suplantando a ese usuario, y encontré con éxito un marcador que:

  1. el marcador está presente en /my/activity/bookmarks (como era de esperar),
  2. pero, el marcador no aparece en /bookmarks en absoluto (pero debería)
  3. y, no aparece en /filter?q=in%3Abookmarked

Al consultar la tabla de la base de datos bookmarks, por supuesto que está ahí. Sin embargo, al consultar la tabla topic_users, la columna bookmarked está establecida en false, lo que supongo que puede estar relacionado con el problema.

Para ser claro, esta cuenta también tenía marcadores en los que el marcador se mostraba en los 3 lugares anteriores (como deberían), pero este es un estado temporal y eventualmente “desaparecen”. La consulta SQL parece devolver solo los problemáticos. Por lo tanto, ejecutarla en un sistema de producción ocupado y suplantar al usuario respectivo debería permitir reproducir el problema.

1 me gusta

Gracias @mentalstring. Llevo esto de nuevo al equipo con esta nueva información y veo qué se nos ocurre a continuación.

2 Me gusta

@mentalstring gracias por tu paciencia durante todo este tiempo, lamento que hayamos tardado tanto en llegar a la raíz de esto. Hoy encontré la causa y una forma de reproducirla basándome en los datos que has proporcionado y en un informe en Data Explorer sobre Meta. Para reproducirlo:

  • Marca un tema como favorito y no marques ninguna publicación dentro de él.
  • Elimina o recupera cualquier publicación en el tema.

Esto es causado por este trabajo (añadido por mí hace años) que no tiene en cuenta los marcadores a nivel de tema:

Por lo tanto, una solución está en camino junto con una migración de datos para corregir los registros existentes. Publicaré aquí de nuevo cuando la tenga fusionada.

3 Me gusta