これ、普通は発生しないんですが、Mastodonのデータベースから不用意にインデックスを削除したとか、何かそういう理由で、重複レコードが出来てしまうことがあります。

今回、Mastodon v3.2.0へのマイグレーションで、accountsテーブルのusernameとdomainを小文字に変換してユニーク制約のついたインデックスを張り直すっていうのがあるんですが、そこでいくつかの管理者がエラーになったようで、issueがあがっています。
github.com/tootsuite/mastodon/

トラブルシューティングなので、マイグレーション書き換えたり、SQL飛ばしたり、rails console使ったり、色々やってます。状況としてはマジヤベーんですが、結構面白いですw

教訓としては、ユニークインデックス張る前に、チェックぐらいは入れた方がよさそう、というところです……。

Mastodonのサーバを管理されている方へ

PgHero(管理から入れるPostgreSQLのダッシュボード)で、Duplicate Indexesを指摘されたり、Space(テーブルやインデックスの使用容量の一覧)でインデックスにUNUSEDがついていたりすると思いますが、

_人人人人人人人人人_
> インデックスを <
> 削除しないで! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

インデックスを含めたデータベースのスキーマは、Mastodon本体のソースコードの中で、RailsのActive Recordの仕組みを使って変更を管理しています。その管理されている状態と一致しなくなると、いずれかの時点でdb:migrateできなくなって詰みます。

また、インデックスは、データベースの検索を高速にするだけでなく、同じキーを持つデータが重複しないようにする役割もあります。

滅多に使われないインデックスでも、それが無くなるとデータベースの整合性が壊れます。

データベース構造の変更は、本家のGithubにissueをあげたり、pull-requestを経て行いましょう。

こちらの件、続報としましては、
fedibird.com/@noellabo/1045866

同じ名前のアカウントが重複してしまって、整合性が破綻しているので、そのままでは修復不能になっていました。

そこで、主要開発者の一人(ThibGさん)が、おかしくなった状態を再統合するためのRubyのコードを書いて、論理的に修復を図る形でなんとか解決に向かっています。

怖いですねえ、恐ろしいですねえ

それではissueをご期待ください。さよなら、さよなら、さよなら・・・

フォロー

いま問題が起きている人の全員が、手動でインデックスを削除しちゃったことが原因だったらいいんですが、

_人人人人人人人人人人人_
> なにもしてないのに <
> 壊れた       <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

だとヤバイですよね……。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。