ブックマークが消える問題と /bookmarks の期待される動作

Discourse 3.0 に約 2 か月前にアップデートしてから、コミュニティのメンバーからブックマークが時々消えてしまうという報告を受けています。苦情は、主に /bookmarks を使用しているユーザー(/my/activity/bookmarks ではなく)に限定されているようです。この 2 つの間には関連するユーザビリティの問題がありますが、それは後で触れることにします。

現時点では、/bookmarks がユーザーのブックマークのすべて(/my/activity/bookmarks にリストされているもの)を表示していないのはなぜか、その期待される動作について主に混乱しています。なぜでしょうか?私自身のカウントでは、ブックマークの差は 1/3 近く失われています。これら 2 つのセクションは、基本的に同じ数のブックマーク/トピックを表示すべきではないでしょうか?

/bookmarks はブックマークされた投稿のみをサポートし(トピックはサポートしない)、トピックはサポートしないのではないかと思いましたが、そうではないようです。ユーザーは一貫して投稿/トピックをブックマークし、/bookmarks の下に数時間または数日間表示されるのを確認してから、それが消えてしまうのですか? :confused: ブックマークを削除して再度ブックマークしても、しばらく表示され、その後また消えてしまいます。明確にしておくと、ブックマークは常に /my/activity/bookmarks の下に表示されるため、ブックマーク自体は存在しますが、しばらくすると /bookmarks の下には表示されません。これら 2 つのセクションの内容には違いがあるはずですが、私には見えません。何を見落としているのでしょうか? :thinking:


さて、この問題がユーザーにとって特に厄介なのは、ブックマークしたトピックに更新がある(特定のカテゴリ内、またはフォーラム全体で)トピックを見つけるという主なユースケースにとって、/my/activity/bookmarks が使い物にならないことです。

/my/activity/bookmarks のインターフェースには多くの優れた機能が見られますが、それでも主な用途には対応していません。それは、最後の活動で並べ替えながら、どのトピックに更新があるか(未読数)を確認できることです。そこでも並べ替えが機能し、各トピックの未読投稿数が表示されると素晴らしいでしょうが、/my/activity/bookmarks の下でブックマークをカテゴリ別にフィルタリングする機能がどのように機能するかはわかりません。そのため、/bookmarks も存在する正当な理由があるのかもしれません。

いずれにせよ、これらは 2 つの別々の問題(バグ(?)と UX 問題)かもしれませんが、関連しています。私はコミュニティに「消えるブックマーク」を避けるために /my/activity/bookmarks を使用するように勧めてきましたが、彼らがそれを何のために使っているのかについては、実際には機能しません。おそらく、「消える」ブックマークを理解すれば、回避策を見つけることができるでしょう。では、なぜすべてのブックマークが /bookmarks の下に表示されないのでしょうか?

「いいね!」 5

この差のいくつかは、/bookmarks にはブックマークされたプライベートメッセージが含まれておらず、トピックに複数のブックマークされた投稿がある場合、/bookmarks ではトピックが一度だけ表示されるという事実によって解消されました。

しかし、ブックマークはまだ失われています。/my/activity/bookmarks の下にトピックが表示されていても、/bookmarks の下には常に表示されないメンバーがいくつかいます。これは「常に」という言葉に重点を置いています。なぜなら、最初は常に表示されるのに、数時間/数日後に最終的に消えてしまうからです。:anguished:

これも、Discourse 3.0 にアップデートしてから発生し始めたことなので、バグの可能性があります。

トピックしかブックマークできません。投稿はできません :thinking:

特定の投稿、さらには同じトピックの複数の投稿にブックマークを付けることができると理解しています。

「いいね!」 4

あなたの理解は非常に有効で確かなものです。私の理解はそうではありません。

いつからそれが可能になったのですか?

This, along with bookmarking chat messages (which only works when the chat plugin is enabled) has been around for some time now, at least since FEATURE: Promote polymorphic bookmarks to default and migrate (#16729) · discourse/discourse@fcc2e7e · GitHub .

This is the crux of the issue really. We still have this old /bookmarks route, which is somewhat useful because of the unread/activity sorting but is missing key things from the new route, and also likely that the query it is using has some issues with post/topic bookmarks and doesn’t show chat bookmarks at all.

This makes sense technically since it’s just a topic list. not a post list, it’s one of the main differences between the old route and the new.

I am not sure what we need to do here, I will look into it more and discuss internally. It is not ideal to have both routes, it would be nicer if the new one could do the missing feature from the old one.

「いいね!」 1

今になって思えば、トピックを2つに分けるべきだったのかもしれません。一つは#ux用、もう一つは#bug用です。なぜなら、私の主な問題(ブックマークが消えること)が、ユーザビリティの問題に隠れてしまっているからです。

その間、ブックマーク機能について調べてみたところ、別のバグを見つけましたが、ブックマークが/bookmarksからランダムに消える理由はいまだに分かりません。なぜか特定のトピックでより頻繁に発生するように見えますが、共通のパターンは見つかっていません。私にとって本当に奇妙なのは、何かをブックマークした後、それが/bookmarksの下で数時間または数日間は正常に表示されているように見えるのに、その後そこで消えてしまい、ブックマークを削除して再度ブックマークし直すことによってのみ「修正」されることです。

はっきりさせておくと、これはブックマークのリマインダーを設定してブックマークを削除するという問題ではありません。リマインダーは関与しておらず、ブックマークは削除されていません(/my/activity/bookmarksの下には表示されたままです)。しばらくすると/bookmarksから消えるだけです。

「いいね!」 2

これは#bugに移動しました。なぜなら、#supportはこれらのどちらでもなかったからです。こちらでより多くの人の目に触れることを願っています。

間接的な上げ直しで申し訳ありませんが、この件に関して非常に不満を抱えているユーザーがかなりいます。おそらく、/bookmarksがデフォルトで有効になっていない(つまり、UIに表示されていない)ことが、このバグへの露出をいくらか減らしているのかもしれませんが、これが私たちのフォーラム固有の問題であるとは想像できません。

「いいね!」 1

無視しているわけではありません。:slight_smile: どう対応するのが最善か検討中です。近日中に、より詳しい情報をお届けできる見込みです。:crossed_fingers:

「いいね!」 1

この問題はイライラするものと思われますが、私はまだそれを再現できず、原因となる可能性のある良い推測もできていません。

今回はUXの問題は無視して、バグに焦点を当てます。

問題を再述することから始めます。

再現するための理論的な手順ですが、100%の確実性はありません。

  1. ブックマークがない状態から始める
    • /bookmarks に移動し、リストにトピックがないことを確認する
    • /my/activity/bookmarks に移動し、リストにブックマークがないことを確認する
  2. いくつかの投稿やトピックにブックマークを追加する。(例:10個のユニークなトピックに15個のブックマーク)
    • リマインダーが関係しているとは考えにくいですが、そうかもしれませんか?
    • 投稿をブックマークした場合とトピックをブックマークした場合で違いがあるかはまだわかりません。
  3. ブックマークされたユニークな「トピック」の数を心に留めておく
  4. /bookmarks に移動し、リストに10個のトピックがあることを確認する
  5. /my/activity/bookmarks に移動し、10個のトピックから15個のアイテムがリストにあることを確認する
  6. 待つ
  7. /my/activity/bookmarks に戻り、リストに10個のトピックから15個のアイテムが「まだ」あることを確認する
  8. /bookmarks に移動し、リストに10個未満のトピックがあることを確認する

もし誰かが、新しいサイトでこの問題をより確実に再現できれば、この問題の特定を大きく前進させるのに役立ちます。

それがない場合、誰かがこの問題を目撃した場合、問題の特定に役立つデバッグ手順をいくつか提案できるかもしれません。

  1. /my/activity/bookmarks に移動し、一番下までスクロールする。
  2. ユニークなトピックの数(N)を数える。
  3. /bookmarks に移動し、一番下までスクロールする。
  4. リストにN個未満のトピックがあることを確認する。
「いいね!」 1

この件についてご尽力いただきありがとうございます。あまり面白くないバグ修正リストの上位ではないことは承知しております。:sweat_smile:

はい、それらはほぼ正しい手順ですが、後述するいくつかの注意点があります。

とはいえ、この問題はランダムな性質(ランダムなトピックがランダムな時間に発生し、任意の時間が経過すると消える)のため、これらの手順で状況を設定するだけでは再現が難しいかもしれません。通常の利用が必要であり、何がトリガーになるのか(時間である可能性もある)が不明だからです。私自身、オンデマンドでバグを再現することはできませんでしたし、これを報告しているユーザーは皆、/bookmarks を利用する私よりもはるかにアクティブです。

しかし、複数の異なるユーザーが影響を受けているという報告を受けており、アカウントのなりすましを通じて確認しました。一部のユーザーには、/bookmarks から消えたトピックのいくつかを少なくともブックマークしないように依頼しました。そのため、オンデマンドで再現することはできませんが、それが起こっているアカウントにはまだアクセスでき、/bookmarks/my/activity/bookmarks を比較することで違いを確認できます。

フォーラムへの管理者アクセスは提供できませんが、SQLクエリやインスタンスのDiscourse APIへのリクエスト(影響を受けているユーザーとしてでも)を実行することは喜んで行います。もし誰かが確認したい場合は、フォーラムの詳細についてPMしてください。

/bookmarks.json および /my/activity/bookmarks.json エンドポイントを少し試しましたが、あまり進展しませんでした。/bookmarks ページは結果の最初のページを読み込んでおり、より多くのページのエンドポイントにしかヒットしないようです。/my/activity/bookmarks は、エンドポイントからすべてのブックマークデータを取得するように見えます。そのため、APIレスポンスを比較することはできませんでした。

Ruby開発者ではありませんが、これらの2つのエンドポイントがコードのどこに該当するかを調べて違いを理解しようとしましたが、技術スタックに慣れていないため、コントローラーで迷子になり、UsersController#bookmarks しか見つけられませんでした。

さて、手順に関するいくつかのコメントですが、おそらくあまり関連性はないかもしれませんが、明確にするために記載します。

おそらく正しいでしょうが、フォーラムで影響を受けているすべてのユーザーは長年のユーザーで多くの既存のブックマークを持っており、3.0へのアップグレードでこれが起こったため、確認できません。しかし、ブックマークを削除して再度追加すると問題が繰り返されるため、まっさらな状態から開始しても同様に発生すると想定しています。報告者のうち一人だけが、アップグレード直後はより一般的だったが、その後は頻度が減ったと言っていましたが、単に気づかずにブックマークを失っているだけかもしれません。:sweat_smile:

この問題を理解するために辛抱強く協力してくれたユーザーに確認したところ、次のように言われました。

  • 両者とも常にトピックをブックマークしており、ポストはブックマークしない。
  • ブックマークのリマインダーは決して使用しない。

これは、ポストやリマインダーでも同様に起こらないという意味ではありませんが、それらに依存していないように見えるということです。

/my/activity/bookmarks はプライベートメッセージからのブックマークも表示できる可能性があるため、異なるNはそれによるものである可能性もあるという小さな注意点です(私が混乱した点の一つです)。


繰り返しになりますが、SQLクエリ、APIリクエストを実行したり、さらに情報を提供したりすることは喜んで行います。ランダムな動作のためデバッグが難しいことは十分に承知していますが、それゆえにユーザーをイライラさせているのです。

「いいね!」 1

1つの理論として、おそらく topic_users.bookmarked が何らかの方法で同期ずれを起こしているのではないかということです。問題のあるトピックが特定できたら、そのユーザー/トピックの組み合わせで topic_users テーブルをクエリして、bookmarked が true か false かを確認してもらえますか?

また、新しい実験的な /filter 機能 で、「見つからない」トピックが in:bookmarked で表示されるかどうか興味があります。例えば、Discourse Meta のようなものです。これも試してみて、結果を教えていただけますか?

「いいね!」 1

はい、そのようです。

「見つからない」ブックマークの1つを調べたところ、topic_users.bookmarked は false に設定されていました。このトピックは /bookmarks には表示されませんが、/my/activity/bookmarks には表示されます。

関連があるかどうかわかりませんが、そのレコードの topic_users.last_posted_at の日付は、ほぼ1か月前(消えた頃)であり、その間、問題のトピックにはほぼ毎日投稿されています。

いずれにせよ、その bookmarked フラグに何が影響するのかわかりませんが、疑わしいと思います。

他に確認できることはありますか?

喜んで試したいのですが、stable (3.0.3) を使用しているため、まだ利用できません。

「いいね!」 2

これは非常に役立ちます。ありがとうございます。3.0.3 にアップデートする前にどのバージョンだったか分かれば、バグがいつ導入されたかを特定するのに役立ちます。

いつ優先順位を付けられるかは保証できませんが、開始する際に役立つ情報があると思います。

「いいね!」 2

以前は常に安定版ブランチを使用していたため、おそらく 2.8.14 を使用していたと思われます。3 月 11 日に更新し、おそらく 3.0.1 になったと思われます。最初の苦情は 3 月 18 日に寄せられたため、理論的には 3.0.2 まで遡る可能性もあります。そのため、その間にかなりの数の 2.9 ベータ版リリースがあったと思われます。

ファイルシステムに以前のバージョンを推測できるログがあれば確認できますが、2.8.14...3.0.2 が正しいはずです。


スキーマに詳しくないので役立つかどうかわかりませんが、以下のクエリを実行しました。

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;

そして 3000 件以上の結果が得られました。

おそらく、同様のクエリを任意の運用システムで実行して、「欠落している」ブックマークを見つけることができれば、問題の再現に一歩近づくでしょう。当たり前のことを言っているかもしれませんが、お役に立てれば幸いです。:sweat_smile:

「いいね!」 2

参考までに、現在バージョン3.1.2ですが、問題は依然として残っています。

ユーザーは、ブックマークが1日に最大5回「消える」(毎回ブックマークし直した後)と報告しています。現状では、この機能は壊れていて使用できず、同じレベルの機能を提供する良い代替手段もありません。

再現方法(SQLクエリによる)とバグが導入されたバージョン範囲が特定された今、これがいつか修正されるという希望を持っても良いでしょうか?

3.1.2 にアップデートされたとのことですが、次回この問題が発生した際に、それらのトピックが /filter からも欠落しているか、またはそこに表示されるか確認していただけますか?

その質問への回答が、ここでの対応を決定するのに役立つと思います。

「いいね!」 3

/filter 機能でテストしたところ、問題は in:bookmarked 検索でも発生するようです。

消えるタイミングがランダムなため、以前投稿した SQL クエリを使用して「問題のある」ブックマークを見つけ、そのユーザーになりすましてテストしたところ、以下のブックマークを見つけることができました。

  1. ブックマークは /my/activity/bookmarks に存在します(予想通り)。
  2. しかし、ブックマークは /bookmarks には一切リストされていません(リストされるべきなのに)。
  3. /filter?q=in%3Abookmarked にも表示されません。

もちろん、bookmarks DB テーブルをクエリすると存在しますが、topic_users テーブルをクエリすると bookmarked 列が false に設定されています。これが問題に関連しているのかもしれません。

明確にしておくと、このアカウントには、ブックマークが上記の 3 つの場所すべてに表示されているものもありました(本来あるべき姿)。しかし、これは一時的な状態で、最終的には「消えて」しまいます。SQL クエリは、問題のあるものだけを返すようです。したがって、ビジーな本番システムで実行し、該当するユーザーになりすますことで、問題を再現できるはずです。

「いいね!」 1

@mentalstringさん、ありがとうございます。この新しい情報を持ってチームに持ち帰り、次に何をすべきか検討します。

「いいね!」 2

@mentalstring 長い間お待ちいただきありがとうございます。原因究明に時間がかかり申し訳ありません。本日、いただいたデータとMetaのData Explorerのレポートに基づいて、原因と再現方法を見つけました。再現するには:

  • トピックをブックマークし、その中の投稿はブックマークしない
  • トピック内の投稿を削除または復元する

これは、トピックレベルのブックマークを考慮していない、このジョブ(私が数年前に追加したもの)によって引き起こされています。

そのため、修正と既存レコードを修正するためのデータ移行が進行中です。マージされたら、改めてこちらで投稿します。

「いいね!」 3