恒久的な削除バグ

恒久的な削除にバグがあると思います。

いくつかの投稿を削除しました。しかし、削除済み投稿リストを開くことができません。

ここに342件の削除済み投稿がまだあることがわかります。しかし、それをクリックすると404ページに遷移します。

他のユーザーの削除リストは開くことができますが、自分のリストは開けません。

これを修正するために何かできることはありますか?

「いいね!」 3

バグを再現する手順がわかりました。

2つのアカウントが必要かどうかはわかりませんが、私の状況は以下のとおりです。

  1. アカウントAがトピックを作成し、ピン留めして閉じます。
  2. アカウントAがトピックをソフト削除します。
  3. 5分待ってから、アカウントBにログインし、アカウントAの削除リストを開きます(例:www.example.com/u/username/deleted-posts)。
  4. アカウントAがソフト削除したばかりの投稿を見つけて、開きます。
  5. 投稿を完全に削除しようとすると、「他の投稿があるため、投稿を削除できません」というエラーメッセージが表示されます。
  6. 投稿の下にあるピン留めとトピックを閉じたメッセージを削除してから、再度完全に削除してみてください。
  7. 成功しますが、アカウントAの削除リストを開くことができなくなります。
「いいね!」 3

これを誰か見ていただけますか?

機密情報を含む投稿をいくつかクリーニングしたのですが、行き詰まってしまいました…

「いいね!」 3

トピック/PMから削除された投稿にまだアクセスして、そこから完全に削除することはできますか、それとも削除された投稿は一切表示されなくなりますか?

「いいね!」 2

投稿からアクセスできます。

しかし、どの投稿かわからないため、投稿削除リストは非常に重要です。

これがなければ、プライベートメッセージや公開トピックをすべて手動で確認して見つけなければなりません。

「いいね!」 2

deleted-posts.json も試しましたが、情報には削除された投稿は含まれていませんでした。

「user_badges」やその他のユーザー情報のようなものしか表示されません。

「いいね!」 2

削除された投稿のIDリストを何らかの方法で取得できれば、それも役立ちます。

「いいね!」 2

再現を試みています。

  • 管理者Aが新しいトピックを作成し、それをグローバルに(永久に)ピン留めしてから、閉じます。
  • 管理者Aがトピックをソフト削除します。

  • 管理者Bが管理者Aのプロフィールから/deleted-postsリストにアクセスして、このトピックを見つけます。
  • 管理者Bがトピックを完全に削除しようとすると、「他の投稿があるため、このトピックを完全に削除することはできません。」というエラーが表示されます。
  • 管理者Bが「ピン留め」と「閉じる」の小さなアクション投稿を削除します。
  • 管理者Bが完全に削除を再試行すると、削除は成功します。

  • しかし、管理者Bは管理者Aの/deleted-postsにアクセスできなくなり、「GET https://greedy.jammydodger.monster/posts/jammydodger/deleted?offset=0」というエラーが発生します。

ただし、管理者Aと管理者Cは引き続き管理者Aの/deleted-postsリストにアクセスできます。当面の間、@VincentAlse様、セカンダリ管理者アカウントを使用して/deleted-postsリストにアクセスし、削除したい他の投稿を見つけていただけますでしょうか?または、data-explorerクエリを使用して特定することもできます。

「いいね!」 3

JammyDodgerさん、こんにちは。

確認ありがとうございます。Admin C(古いアカウントと新規作成したアカウントの両方)を試しましたが、うまくいきませんでした。原因は、多くの異なるアカウントの投稿を削除しており、ほとんどのアカウントの削除リストがバグっていることだと思います。

Data Explorerを見てみます。これで削除された投稿をクエリできますか?

「いいね!」 2

ああ、それは残念です。データエクスプローラープラグインにアクセスできる場合は、次のようなものが特定のユーザーの /deleted/posts リストを(post_id も含めて)再現できると思います。

-- [params]
-- user_id :user_id

SELECT p.created_at AS reltime$time,
       id AS post_id,
       id
FROM posts p
WHERE p.user_id = :user_id
AND p.deleted_at IS NOT NULL
ORDER BY p.created_at DESC
「いいね!」 4

試してみます。

「いいね!」 3

@VincentAlse、うまくいきましたか?もしその方法で必要なリストが見つからなかった場合、削除したい投稿を見つける方法は他にもいくつかあるはずですが?

「いいね!」 3

素朴な質問ですが、user_idとは何ですか?.jsonページから判断すると、私のuser_idは1だと思います。

このメッセージが表示されます: ActiveRecord::PreparedStatementInvalid: /* の :user_id に値がありません

@JammyDodger

「いいね!」 1

そのスクリーンショットを見ると、一番上のパラメータを変更したようですね。そうすると、実際には動作しなくなります。:user_id のままにしておくと、実行時にユーザー名を入力できる選択ボックスが表示されます。:+1:

または、パラメータを削除して、JSONから取得したユーザーIDを WHERE p.user_id = の行に追加することもできます。

これで意味は通じますか?

「いいね!」 3

ヘルプはすでに受け取っているようですが、それをクリックすると /u/deleted-posts に移動し、機能します。

「いいね!」 1

直りました!

コードに user_id を入れる必要があると思っていました。

@JammyDodger さん、ありがとうございました。

「いいね!」 4

昨日ご報告いただいたバグは、このPRで修正済みで、すでにマージされています。Discourseインスタンスをアップデートすればデプロイ可能です。

しかしながら、トピックを完全に削除すると、データベースに孤立した小さなアクション投稿が残ってしまうことが判明しました。この2つ目のバグは、以下のPRで修正されました。

これで問題なく動作するはずです。もし他に問題がありましたら、お知らせください。

「いいね!」 6

このトピックは3日後に自動的に閉じられました。返信はもう許可されていません。