Marque-pages disparus et comportement attendu de /bookmarks

Notre communauté a signalé que, depuis la mise à jour vers Discourse 3.0 il y a environ 2 mois, leurs signets disparaissent parfois mystérieusement. J’ai limité les plaintes aux utilisateurs qui utilisent principalement /bookmarks (et non /my/activity/bookmarks) — il y a un problème d’utilisabilité connexe entre les deux, mais j’y reviendrai plus tard.

Pour l’instant, je suis surtout perplexe quant au comportement attendu de /bookmarks, car il n’affiche pas tous les signets des utilisateurs (tels qu’ils sont listés dans /my/activity/bookmarks). Pourquoi ? Pour mon propre compte, la différence est de près d’un tiers de signets manquants : ces deux sections ne devraient-elles pas afficher exactement le même nombre de signets/sujets ?

J’ai pensé que /bookmarks ne prenait peut-être en charge que les publications mises en signet (et non les sujets), mais il ne semble pas en être ainsi : nos utilisateurs mettent systématiquement en signet une publication/un sujet, le voient s’afficher correctement sous /bookmarks pendant quelques heures ou quelques jours, puis il… disparaît ? :confused: S’ils suppriment le signet, le remettent, il apparaît pendant un certain temps, puis disparaît à nouveau. Pour être clair, les signets s’affichent toujours correctement sous /my/activity/bookmarks, donc le signet existe — mais pour une raison quelconque, il ne s’affiche pas sous /bookmarks après un certain temps. Il doit y avoir une différence entre le contenu des deux sections, mais je ne la vois pas — qu’est-ce qui m’échappe ? :thinking:


Maintenant, la raison pour laquelle c’est particulièrement ennuyeux pour nos utilisateurs, c’est qu’ils trouvent /my/activity/bookmarks inutilisable pour leur cas d’utilisation principal, qui est de trouver quels de leurs sujets mis en signet ont des mises à jour (dans une catégorie particulière, ou sur l’ensemble du forum).

Je vois de nombreuses fonctionnalités intéressantes dans l’interface /my/activity/bookmarks, mais elle ne remplit toujours pas leur fonction principale : pouvoir trier par dernière activité tout en voyant quels sujets ont des mises à jour (nombre de non lus). Ce serait formidable si le tri fonctionnait également là et si le nombre de publications non lues dans chaque sujet s’affichait, mais je ne suis pas sûr de la manière dont la fonctionnalité de filtrage des signets par catégorie fonctionnerait sous /my/activity/bookmarks, donc peut-être qu’il est justifiable qu’il y ait aussi /bookmarks.

Quoi qu’il en soit, ce sont peut-être deux problèmes distincts ici (peut-être un bug (?) et un problème d’UX), mais ils sont liés : j’ai poussé la communauté à éviter les “signets disparus” en utilisant plutôt /my/activity/bookmarks, mais pour ce qu’ils l’utilisent, cela ne fonctionne vraiment pas. Peut-être si nous comprenons les signets “disparus”, nous pourrons trouver une solution de contournement — alors : pourquoi tous les signets ne s’affichent-ils pas sous /bookmarks ?

5 « J'aime »

J’ai réduit une partie de cette différence du fait que /bookmarks n’inclut pas les messages privés mis en favoris et si un sujet a plusieurs messages mis en favoris, il n’affiche le sujet qu’une seule fois sous /bookmarks.

Cependant, des favoris manquent toujours. Nous avons plusieurs membres qui ont des sujets affichés sous leur /my/activity/bookmarks qui ne s’affichent pas toujours sous /bookmarks. J’insiste sur le toujours car initialement ils le font toujours, jusqu’à ce qu’ils disparaissent finalement après quelques heures/jours. :anguished:

Encore une fois, cela n’a commencé à se produire que lors de la mise à jour vers Discourse 3.0, donc je suspecte un bug.

Nous ne pouvons pas mettre en favoris des messages, seulement des sujets :thinking:

Ma compréhension est que vous pouvez marquer des publications spécifiques ; même plusieurs publications sur le même sujet :

4 « J'aime »

Votre compréhension est vraiment valable et solide. La mienne ne l’est pas.

Quand avons-nous eu ça ?

Ceci, ainsi que la mise en signet des messages de chat (qui ne fonctionne que lorsque le plugin de chat est activé) existe depuis un certain temps déjà, au moins depuis FEATURE: Promote polymorphic bookmarks to default and migrate (#16729) · discourse/discourse@fcc2e7e · GitHub .

C’est le nœud du problème. Nous avons toujours cette ancienne route /bookmarks, qui est quelque peu utile en raison du tri par non lus/activité, mais il manque des éléments clés de la nouvelle route, et il est probable que la requête qu’elle utilise ait des problèmes avec les signets de messages/sujets et n’affiche pas du tout les signets de chat.

Cela a du sens techniquement car il s’agit juste d’une liste de sujets, pas d’une liste de messages, c’est l’une des principales différences entre l’ancienne et la nouvelle route.

Je ne suis pas sûr de ce que nous devons faire ici, je vais examiner la question plus en détail et en discuter en interne. Il n’est pas idéal d’avoir les deux routes, il serait plus agréable que la nouvelle puisse remplir la fonctionnalité manquante de l’ancienne.

1 « J'aime »

Je réalise maintenant que j’aurais peut-être dû diviser mon sujet en deux : un pour UX et un autre pour Bug, car mon problème principal (disparition des favoris) est éclipsé par celui de l’utilisabilité.

Entre-temps, j’ai examiné la fonctionnalité des favoris et j’ai trouvé un autre bug, mais je ne comprends toujours pas pourquoi les favoris disparaissent aléatoirement de /bookmarks. Cela semble plus fréquent avec certains sujets qu’avec d’autres pour une raison quelconque, mais je n’ai pas trouvé de schéma commun. Ce qui me semble vraiment étrange, c’est qu’après avoir mis un sujet en favori, il semble s’afficher correctement sous /bookmarks pendant un nombre arbitraire d’heures/jours, jusqu’à ce qu’il disparaisse de là et ne soit “corrigé” qu’en supprimant le favori et en le remettant.

Pour être clair, il ne s’agit pas d’un problème de réglage d’un rappel de favori pour supprimer le favori : aucun rappel n’est impliqué, et les favoris ne sont pas supprimés (ils s’affichent toujours sous /my/activity/bookmarks) — ils sont seulement absents de /bookmarks après un certain temps.

2 « J'aime »

Déplacé ceci dans Bug, puisque Support n’était ni l’un ni l’autre, dans l’espoir que cela attire plus l’attention ici.

Mes excuses pour ce remontage indirect, mais nous avons un bon nombre d’utilisateurs frustrés, très mécontents de cela. Peut-être que le fait que /bookmarks ne soit pas activé par défaut (c’est-à-dire visible dans l’interface utilisateur) réduit quelque peu l’exposition à ce bug, mais je ne peux pas imaginer que cela soit spécifique à notre forum.

1 « J'aime »

Nous ne vous ignorons pas. :slight_smile: Nous examinons simplement la meilleure façon de gérer cela. Nous aurons bientôt plus de nouvelles pour vous, espérons-le. :crossed_fingers:

1 « J'aime »

Ce problème semble frustrant, mais je n’ai pas encore réussi à le reproduire et je n’ai pas encore d’hypothèses solides sur ce qui pourrait le causer.

Je vais ignorer le problème d’UX pour l’instant et me concentrer sur le bug.

Je vais commencer par reformuler le problème :

Étapes théoriques pour reproduire, mais pas avec une certitude à 100 % :

  1. Commencer sans aucun signet
    • Aller sur /bookmarks et vérifier qu’il n’y a aucun sujet dans la liste
    • Aller sur /my/activity/bookmarks et vérifier qu’il n’y a aucun signet dans la liste
  2. Ajouter des signets à un certain nombre de messages et de sujets. (Par exemple, 15 signets répartis sur 10 sujets uniques)
    • Nous ne pensons pas que les rappels soient en jeu ici, mais peut-être le sont-ils ?
    • Nous ne savons pas encore si cela a de l’importance que vous mettiez en signet un message ou un sujet
  3. Noter le nombre de sujets uniques qui ont été mis en signet
  4. Aller sur /bookmarks et vérifier qu’il y a 10 sujets dans la liste
  5. Aller sur /my/activity/bookmarks et vérifier qu’il y a 15 éléments dans la liste provenant de 10 sujets
  6. Attendre
  7. Revenir sur /my/activity/bookmarks et vérifier qu’il y a toujours 15 éléments dans la liste provenant de 10 sujets
  8. Aller sur /bookmarks et constater qu’il y a moins de 10 sujets dans la liste

Si quelqu’un pouvait commencer avec un site vierge et reproduire cela avec une plus grande certitude, cela aiderait grandement à identifier le problème ici.

En l’absence de cela, si quelqu’un voit le problème, juste avec ces étapes, peut-être pourrons-nous suggérer quelques étapes de débogage pour aider à identifier le problème :

  1. Aller sur /my/activity/bookmarks et faire défiler jusqu’en bas.
  2. Compter le nombre de sujets uniques (N)
  3. Aller sur /bookmarks et faire défiler jusqu’en bas.
  4. Constater qu’il y a moins de N sujets dans la liste
1 « J'aime »

Merci d’avoir essayé de résoudre ce problème — je sais que ce n’est pas la priorité des bugs les plus excitants à corriger. :sweat_smile:

Oui, ce sont à peu près les bonnes étapes pour y parvenir, avec quelques notes mineures que je mentionnerai plus tard ci-dessous.

Cela dit, en raison de la nature aléatoire du problème (il survient sur un sujet aléatoire à un moment donné, disparaissant après un temps arbitraire), il peut être difficile de le reproduire en se contentant de suivre ces étapes, car une utilisation régulière semble nécessaire et on ne sait pas si le déclencheur est temporel (ou lequel). Je n’ai pas réussi à reproduire le bug moi-même sur demande et les utilisateurs qui signalent ce problème sont beaucoup plus actifs que moi dans l’utilisation de /bookmarks.

Cependant, j’ai des rapports de plusieurs utilisateurs différents affectés par ce problème, que j’ai vérifiés par usurpation de compte. J’ai demandé à certains de ne pas marquer à nouveau au moins certains des sujets qui ont disparu de /bookmarks. Ainsi, bien que je ne puisse pas reproduire sur demande, j’ai toujours accès à des comptes où cela se produit et la comparaison de /bookmarks et /my/activity/bookmarks montre les différences.

Bien que je ne puisse pas fournir un accès administrateur à notre forum, je suis heureux d’exécuter des requêtes SQL ou des requêtes à l’API Discourse de notre instance (même en tant qu’utilisateurs rencontrant ce problème) si cela peut aider. N’hésitez pas à m’envoyer un message privé pour les détails de notre forum si quelqu’un souhaite jeter un œil.

J’ai brièvement joué avec les points d’accès /bookmarks.json et /my/activity/bookmarks.json mais je n’ai pas beaucoup avancé : il semble que la page /bookmarks se charge déjà avec la première page de résultats, et ne fait appel au point d’accès que pour obtenir plus de pages, contrairement à /my/activity/bookmarks qui semble récupérer toutes les données de signets à partir du point d’accès. Par conséquent, je n’ai pas pu comparer les réponses de l’API.

Je ne suis pas un développeur Ruby, mais j’ai essayé de comprendre où dans le code se situent ces 2 points d’accès pour essayer de comprendre les différences, mais comme je ne suis pas familier avec la pile technologique, je me suis perdu dans le contrôleur et n’ai trouvé que UsersController#bookmarks.

Voici maintenant quelques commentaires sur les étapes, peut-être pas très pertinents, juste pour être explicite.

C’est probablement correct, mais je ne peux pas le confirmer car tous les utilisateurs affectés sur notre forum sont des utilisateurs de longue date avec beaucoup de signets existants et c’est la mise à niveau vers la version 3.0 qui a causé cela. Mais, comme le problème se répète lorsque l’on supprime un signet et que l’on en ajoute un nouveau, je suppose que si l’on partait d’une ardoise vierge, cela se produirait également. Un seul rapporteur a déclaré que c’était plus fréquent juste après la mise à niveau et que c’était moins fréquent… mais il se peut qu’ils perdent simplement des signets sans s’en rendre compte. :sweat_smile:

J’ai vérifié avec quelques utilisateurs qui ont été assez patients pour m’aider à comprendre cela et on m’a dit :

  • ils marquent toujours des sujets, pas des messages
  • ils n’utilisent jamais les rappels sur les signets.

Je suppose que cela ne signifie pas que cela n’arriverait pas avec des messages et des rappels, juste que cela ne semble pas en dépendre.

Petite remarque juste pour mentionner que /my/activity/bookmarks peut également afficher les signets des messages privés, donc un N différent peut provenir de cela aussi (quelque chose qui m’a perdu à un moment donné).


Encore une fois, je suis heureux d’exécuter des requêtes SQL, des requêtes API ou de fournir plus d’informations si cela peut être utile. Je suis pleinement conscient qu’il est difficile de déboguer cela en raison de son comportement aléatoire, mais c’est aussi pourquoi cela frustre les utilisateurs.

1 « J'aime »

Une théorie est que peut-être topic_users.bookmarked se désynchronise d’une manière ou d’une autre. Si vous avez identifié un sujet problématique, pouvez-vous essayer d’interroger la table topic_users pour la combinaison utilisateur/sujet que vous trouvez, et voir si bookmarked est vrai ou faux ?

De plus, je suis curieux de savoir si la nouvelle fonctionnalité expérimentale /filter affiche les sujets « manquants » avec in:bookmarked, par exemple Discourse Meta. Pouvez-vous essayer cela aussi et nous le faire savoir ?

1 « J'aime »

Oui, il semble que ce soit le cas.

J’ai examiné l’un des favoris « manquants », et topic_users.bookmarked était défini sur false pour celui-ci. Ce sujet n’apparaît pas sous /bookmarks, mais il est sous /my/activity/bookmarks.

Et je ne suis pas sûr si c’est pertinent, mais topic_users.last_posted_at pour cet enregistrement a une date qui date de près d’un mois (autour de sa disparition), alors que le sujet en question a des publications presque quotidiennement depuis.

Bref, je ne sais pas ce qui touche ce drapeau bookmarked, mais je suppose qu’il est suspect.

Y a-t-il autre chose que je puisse vérifier ?

J’essaierais volontiers, mais nous sommes sur la version stable (3.0.3), donc nous ne l’avons pas encore.

2 « J'aime »

C’est très utile. Merci. Si vous avez une idée de la version avant la mise à jour vers la 3.0.3, cela nous aiderait également à isoler quand le bug a été introduit.

Je ne peux pas garantir quand nous pourrons prioriser cela, mais je pense que nous avons quelque chose sur quoi travailler lorsque nous commencerons.

2 « J'aime »

Nous avons toujours été sur la branche stable, nous étions donc probablement sur la version 2.8.14 auparavant. Nous avons mis à jour le 11 mars, probablement vers la version 3.0.1, et la première plainte est apparue le 18 mars, donc je suppose qu’en théorie cela pourrait aussi être jusqu’à la version 3.0.2. Par conséquent, il y a eu pas mal de versions bêta 2.9 entre-temps, j’en ai bien peur.

S’il existe un journal quelque part sur le système de fichiers pour déduire les versions précédentes, je peux vérifier cela, mais 2.8.14...3.0.2 devrait être correct.


Je ne suis pas sûr que cela soit utile car je ne connais pas le schéma, mais j’ai exécuté la requête ci-dessous :

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;

et j’ai obtenu plus de 3000 correspondances.

Je suppose que quelque chose d’équivalent peut être exécuté sur n’importe quel système de production pour trouver des signets “manquants”, ce qui nous rapprochera j’espère de la reproduction du problème. Désolé si j’énonce l’évidence, j’essaie juste d’être utile. :sweat_smile:

2 « J'aime »

Soit dit en passant, nous sommes maintenant en version 3.1.2 et le problème persiste.

Les utilisateurs signalent que certains favoris “disparaissent” jusqu’à 5 fois par jour (après les avoir re-favorisés à chaque fois). En l’état, la fonctionnalité est tout simplement trop défectueuse pour être utilisée, et il n’existe pas de bonne alternative offrant le même niveau de fonctionnalité.

Maintenant qu’il existe un moyen de le reproduire (par requête SQL), et une gamme de versions pour lesquelles le bug a été introduit, puis-je espérer que cela sera résolu à un moment donné ?

Oh, maintenant que vous êtes en 3.1.2, la prochaine fois que vous verrez cela, pourriez-vous vérifier si ces sujets sont également absents de /filter ou s’ils y apparaissent ?

Je pense que connaître la réponse à cette question nous aidera à décider de ce que nous faisons ici.

3 « J'aime »

J’ai testé avec la fonctionnalité /filter et il semble que le problème se manifeste également avec une recherche in:bookmarked.

En raison de la nature aléatoire de la disparition, j’ai testé cela en trouvant d’abord un favori « offensant » en utilisant la requête SQL que j’ai postée précédemment, puis en me faisant passer pour cet utilisateur, et j’ai réussi à trouver un favori qui :

  1. le favori est présent sur /my/activity/bookmarks (comme il se doit),
  2. mais, le favori n’est pas du tout listé sur /bookmarks (mais devrait l’être)
  3. et, n’apparaît pas sur /filter?q=in%3Abookmarked

En interrogeant la table bookmarks de la base de données, il y est bien sûr présent. Cependant, en interrogeant la table topic_users, la colonne bookmarked est définie sur false, ce qui, je suppose, pourrait être lié au problème ?

Pour être clair, ce compte avait également des favoris où le favori était affiché aux 3 endroits ci-dessus (comme il se doit) — mais c’est un état temporaire et ils finissent par « disparaître ». La requête SQL semble ne retourner que ceux qui posent problème. Par conséquent, l’exécuter sur un système de production chargé et se faire passer pour l’utilisateur respectif devrait permettre de reproduire le problème.

1 « J'aime »

Merci @mentalstring. Je vais ramener cela à l’équipe avec ces nouvelles informations et voir ce que nous pouvons proposer ensuite.

2 « J'aime »

@mentalstring merci de votre patience pendant tout ce temps, désolé que cela ait pris si longtemps pour en trouver la cause. J’ai trouvé la cause et une façon de la reproduire aujourd’hui en me basant sur les données que vous avez fournies et un rapport dans Data Explorer sur Meta. Pour reproduire :

  • Marquez un sujet comme favori et ne marquez aucun message à l’intérieur
  • Supprimez ou récupérez n’importe quel message dans le sujet

Ceci est causé par ce job (ajouté par moi il y a des années) qui ne prend pas en compte les favoris au niveau du sujet :

Une correction est donc en cours, ainsi qu’une migration de données pour corriger les enregistrements existants. Je posterai à nouveau ici lorsque je l’aurai fusionné.

3 « J'aime »