clear-code / redmine_full_text_search

Full text search for Redmine
MIT License
61 stars 24 forks source link

Fix error of deleted directory in repository #106

Closed tkusukawa closed 1 year ago

tkusukawa commented 1 year ago

Gitでフォルダ削除した後、 bin/rails full_text_search:synchronize の処理で次のようなエラーが出るようになりました。

fatal: Not a valid object name 70~bd:myapp

発生箇所を探したところ、 change_mapper.rb の upsert_fts_target関数の中の entry = RepositoryEntry.new(~) の処理でエラーが出ていました。

このentryは 後段の case @record.action when "A", "M", "R" の中で利用されていて when "D" では不要なようなので entry = RepositoryEntry.new(~) を case @record.action when "A", "M", "R" の中で処理したほうが良いと思ったのですが、 如何でしょうか。

kou commented 1 year ago

バックトレースを見せてもらえますか?

tkusukawa commented 1 year ago

申し訳ありません。バックトレースとは何でしょうか。

Cronの結果メールやコマンドラインから実行した結果として表示される fatal: Not a valid object name 70~bd:myapp という表示が出るか出ないかしか、実行結果の違いが解っていません。

tkusukawa commented 1 year ago

Cronからのメールを確認できましたので以下に共有します。

差出人: Cron Daemon root@****.jp 送信日時: 2022年12月10日 22:23 宛先: root@.jp <root@.jp> 件名: Cron root@redmine cd /opt/redmine; RAILS_ENV=production bin/rails full_text_search:synchronize

fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp/migrations fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:myapp fatal: Not a valid object name 70fe3edc8002175470d44c7534079788c998c1bd:templates

kou commented 1 year ago

なんと、Rubyのバックトレースはでていないんですか。。。

発生箇所を探したところ、 change_mapper.rb の upsert_fts_target関数の中の entry = RepositoryEntry.new(~) の処理でエラーが出ていました。

ということだったのでバックトレースから該当箇所を見つけたのかと思っていました。

これは該当箇所をコメントアウトしたりして該当メッセージが出なくなるかどうかを見て判断したということですか?

tkusukawa commented 1 year ago

> これは該当箇所をコメントアウトしたりして該当メッセージが出なくなるかどうかを見て判断したということですか?

はい。原始的でお恥ずかしいのですが、 rbファイルに puts行を入れて synchronizeを実行して通過タイミングを確認することを繰り返しました。

kou commented 1 year ago

ちょっとどうしてこれでそのログが出なくなるのかわかっていない(RepositoryEntry.new(...)でなにかそのログが出るようなGitのコマンドを実行するとは思えない)のですが、問題が発生している環境ではこれででなくなるということなのでマージします。