Summary
#8150 の変更(12.108.0 リリース)より、デフォルトで10秒以上時間がかかるデータベースへのクエリは中断されるようになった。
原因
アカウント削除キューのNoteの削除部分では10秒を大幅に超えるqueryが実行されているため、キューが終了してしまう。
これにより、削除ができない。
10秒以上かかる該当箇所
|
await this.notesRepository.delete(notes.map(note => note.id)); |
解決策
以下のように 100件ずつNoteの削除が行われている。
実測で、10件ずつでも投稿内容によっては10秒に治まらない。
具体的に以下の修正が考えられる。
- 削除を5件ずつなどにしつつ、デフォルトのクエリのタイムアウトを伸ばす
- 削除クエリのみ、タイムアウトを伸ばす
|
const notes = await this.notesRepository.find({ |
|
where: { |
|
userId: user.id, |
|
...(cursor ? { id: MoreThan(cursor) } : {}), |
|
}, |
|
take: 100, |
|
order: { |
|
id: 1, |
|
}, |
|
}) as Note[]; |
Discussed in #9969
Originally posted by fu-sen February 17, 2023
公式とは別の Discord でアカウントの削除ができない、という報告をいくつかいただいています。
しかし、その条件が分からず、 issues ができないので、こちらに一度公開して、情報を募ってみます。
この問題に遭遇しているサーバ管理者様、わかる範囲でコメントいただけると幸いです。
確実な再現ができたら、Issues 化という流れができればと思います。よろしくお願いいたします。
Summary
#8150 の変更(12.108.0 リリース)より、デフォルトで10秒以上時間がかかるデータベースへのクエリは中断されるようになった。
原因
アカウント削除キューのNoteの削除部分では10秒を大幅に超えるqueryが実行されているため、キューが終了してしまう。
これにより、削除ができない。
10秒以上かかる該当箇所
misskey/packages/backend/src/queue/processors/DeleteAccountProcessorService.ts
Line 73 in 0f546b4
解決策
以下のように 100件ずつNoteの削除が行われている。
実測で、10件ずつでも投稿内容によっては10秒に治まらない。
具体的に以下の修正が考えられる。
misskey/packages/backend/src/queue/processors/DeleteAccountProcessorService.ts
Lines 56 to 65 in 0f546b4
Discussed in #9969
Originally posted by fu-sen February 17, 2023
公式とは別の Discord でアカウントの削除ができない、という報告をいくつかいただいています。
しかし、その条件が分からず、 issues ができないので、こちらに一度公開して、情報を募ってみます。
この問題に遭遇しているサーバ管理者様、わかる範囲でコメントいただけると幸いです。
確実な再現ができたら、Issues 化という流れができればと思います。よろしくお願いいたします。