エラー:新規インストールへの移行中にバックアップを復元している間、管理者に通知できません

別のサーバーに Discourse インスタンスを移動するの議論を続けます。

新しいサーバーに Discourse をインストールし、古い管理者と同じユーザー名で新しい管理者を登録し、バックアップを復元した後、すべてが正常に進みましたが、最後に以下のエラーが発生しました。

[2020-01-24 07:06:47] 'padpors' に復元の完了を通知中... [2020-01-24 07:06:47] ユーザーへの通知中に問題が発生しました。

その結果、バックアップを復元できませんでした。

「いいね!」 1

サイトから別のバックアップを取得し、この手順書を使用してターミナルから復元を試みました:https://meta.discourse.org/t/restore-a-backup-from-command-line/108034。しかし、復元の終了時にターミナルで同じエラーが表示されました:

Notifying 'system' of the end of the restore...
Something went wrong while notifying user.
Finished!
[FAILED]
Restore done.

バックアップ自体は問題なかったので、これはバグではないかと思います。

「いいね!」 6

@gerhard、この問題の原因が何か分かりますか?

「いいね!」 7

最近、バックアップ/リストアコードに多くの変更がありました。最新版をお使いですか?

「いいね!」 2

私もこのエラーを頻繁に見かけます。
しかし、このエラーは復元完了後に発生し、復元は「SUCCESS(成功)」で終了します。つまり、エラーではあるものの、復元の失敗を引き起こしているわけではありません。

Unpausing sidekiq...
Marking restore as finished...
Notifying 'DHSupport' of the end of the restore...
Something went wrong while notifying user.
Finished!
[SUCCESS]

上位にエラーがないことを確信していますか?

「いいね!」 6

さらに詳しく調査しました。

#<NoMethodError: undefined method `join' for nil:NilClass>
Backtrace:
     lib/discourse.rb:45:in `pretty_logs'
     /var/www/discourse/lib/backup_restore/restorer.rb:134:in `notify_user'

@logs が初期化されていないようです?

「いいね!」 7

はい、両方のインスタンスで非常に新しいインストールを行い、更新も完了しています。

上位に他のエラーはありませんが、念のため再度確認します。

「いいね!」 1

おっしゃる通り、以前のエラーは以下の通りです:

ERROR:  could not create unique index "index_tags_on_lower_name"
DETAIL:  Key (lower(name::text))=(زبا�) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (lower(name::text))=(زبا�) is duplicated.

これはおそらく、すでに以下の場所で報告されているものだと思います:Can't restore due to corrupt indexes (with some clues on how to deal with corrupt indexes) および There are some duplicated tags due to database corruption and I can't merge

「いいね!」 8
「いいね!」 9