Misskey: ユーザーが2つ以上のファイルをアップロードできない

Created on 11 Aug 2018  ·  5Comments  ·  Source: syuilo/misskey

Summary

5.21.0以降から? 新規に構築した環境では
ユーザが2つ以上のファイルをアップロードできません

Expected Behavior

2つ以上のファイルをアップロードできる

Actual Behavior

2つ以上のファイルをアップロードしようとしたタイミングで
DBでE11000 duplicate key error collection: misskey.driveFiles.files index: metadata.uri_1_metadata.userId_1が出て失敗する

Steps to Reproduce

  1. DBを初期構築 または db.driveFiles.files コレクションを空にする
  2. アプリケーションを開始する
  3. 特定のユーザーでファイルをアップロードした後、同じユーザーでもう1つ別のファイルをアップロードする

Environment

v5.22.0 and (MongoDB 3.6.3 / 4.0.0 / 4.0.1) で再現

おそらく以下のインデックスが影響
https://github.com/syuilo/misskey/blob/3a77d871d59fabfbb4f06da832b29454776e0850/src/models/drive-file.ts#L13

なお、既に稼働中で問題となる重複キーが既に存在する環境の場合は
インデックス自体がエラーで作成されず、この問題は起きないみたいです。

新規環境の場合のみ、問題となるインデックスが作成され
アップロード時にエラーが起きるみたいです。

⚙️Server 🐛Bug

All 5 comments

報告ありがとうございます!すぐに修正します。

はやっ

おそらく、ここ2日くらいのmasterで新規構築して事象が起きてしまったら
アップデートに加えて、問題のインデックスを削除する必要があります。

mongo

# Misskey DBへ
use misskey
db.auth("user","pass")

# 確認
db.driveFiles.files.getIndexes()

# 該当インデックス削除
db.driveFiles.files.dropIndex({"metadata.uri" : 1, "metadata.userId" : 1})

# 再確認
db.driveFiles.files.getIndexes()

次のアップデートに当該インデックス自動削除の処理を入れた方が良さそうですかね

インデックス変更したときには、旧インデックス消す処理入れたほうがいいのかもしれません

Was this page helpful?
0 / 5 - 0 ratings

Related issues

tamaina picture tamaina  ·  3Comments

2vg picture 2vg  ·  3Comments

ShinoharaTa picture ShinoharaTa  ·  3Comments

ibrokemypie picture ibrokemypie  ·  3Comments

tamaina picture tamaina  ·  3Comments