こちらの件、続報としましては、
https://fedibird.com/@noellabo/104586678477507551
同じ名前のアカウントが重複してしまって、整合性が破綻しているので、そのままでは修復不能になっていました。
そこで、主要開発者の一人(ThibGさん)が、おかしくなった状態を再統合するためのRubyのコードを書いて、論理的に修復を図る形でなんとか解決に向かっています。
怖いですねえ、恐ろしいですねえ
それではissueをご期待ください。さよなら、さよなら、さよなら・・・
これ、普通は発生しないんですが、Mastodonのデータベースから不用意にインデックスを削除したとか、何かそういう理由で、重複レコードが出来てしまうことがあります。
今回、Mastodon v3.2.0へのマイグレーションで、accountsテーブルのusernameとdomainを小文字に変換してユニーク制約のついたインデックスを張り直すっていうのがあるんですが、そこでいくつかの管理者がエラーになったようで、issueがあがっています。
https://github.com/tootsuite/mastodon/issues/14443
トラブルシューティングなので、マイグレーション書き換えたり、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を経て行いましょう。
Mastodon 腐った DB 矯正メモ (2020-05-05) by らりお
https://gist.github.com/lo48576/3fc718124de4e22b97d22568031f12dc
Mastodon の DB が腐っていたのを修正したメンテナンスのメモです。 #mastodon
cf.
https://mastodon.cardina1.red/@lo48576/104113951825779459
https://mastodon.cardina1.red/@lo48576/103974978595397759
https://mastodon.cardina1.red/@lo48576/103974987462202016
これ、普通は発生しないんですが、Mastodonのデータベースから不用意にインデックスを削除したとか、何かそういう理由で、重複レコードが出来てしまうことがあります。
今回、Mastodon v3.2.0へのマイグレーションで、accountsテーブルのusernameとdomainを小文字に変換してユニーク制約のついたインデックスを張り直すっていうのがあるんですが、そこでいくつかの管理者がエラーになったようで、issueがあがっています。
https://github.com/tootsuite/mastodon/issues/14443
トラブルシューティングなので、マイグレーション書き換えたり、SQL飛ばしたり、rails console使ったり、色々やってます。状況としてはマジヤベーんですが、結構面白いですw
教訓としては、ユニークインデックス張る前に、チェックぐらいは入れた方がよさそう、というところです……。
issueにもあがってるけど、インデックスを張り替える際にaccountsテーブルの重複レコードが検出されて、マイグレーションに失敗する事例がでてるな……。
https://github.com/tootsuite/mastodon/issues/14443
主に、Fediverseへの関心に基づいた投稿を行うアカウントです。DTP・印刷に関する話をしたり、同人の話をしたり、カレーをブーストしたりします。
Mastodonのcollaborator(開発者の一員)です。また、独自機能を盛り込んだFedibirdを管理・開発しています!
Mastodonサーバ『fedibird.com』の管理者アカウントでもあります。ご連絡は当アカウントへ、サーバインフォメーションについては https://fedibird.com/about/more と @info を参照してください。