clear-code / redmine_full_text_search

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

データ同期でエラー #114

Closed Stag0007 closed 1 year ago

Stag0007 commented 1 year ago

途中で送信し失礼しました。 直近で更新したチケットのワードが検索にかからず、 データ同期を実施しようとしたところ下記エラー。

fts_targetsを確認すると、同チケットの同時刻更新(コメント)で、source_id、source_type_idの重複あり。

ActiveRecord::RecordNotUnique: 
Mysql2::Error: Duplicate entry '263043-10' for key 'index_fts_targets_on_source_id_and_source_type_id': 
INSERT INTO `fts_targets` (`source_id`, `source_type_id`, `project_id`, `container_id`, `container_type_id`, `is_private`, `last_modified_at`, `content`, `tag_ids`) VALUES (263043, 10, 8, 61703, 5, FALSE, '2023-04-05 13:54:35', '設置予定となっている場所にHUBが設置されているか確認。', '[279172874289,1,8589934616]')
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3-x64-mingw32/lib/mysql2/client.rb:131:in `_query'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3-x64-mingw32/lib/mysql2/client.rb:131:in `block in query'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3-x64-mingw32/lib/mysql2/client.rb:130:in `handle_interrupt'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3-x64-mingw32/lib/mysql2/client.rb:130:in `query'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:187:in `block (2 levels) in execute'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:186:in `block in execute'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:185:in `execute'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/mysql/database_statements.rb:28:in `execute'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:196:in `execute_and_free'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/mysql/database_statements.rb:33:in `exec_query'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/database_statements.rb:130:in `exec_insert'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/database_statements.rb:162:in `insert'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `insert'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/persistence.rb:187:in `_insert_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/persistence.rb:734:in `_create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/counter_cache.rb:184:in `_create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/locking/optimistic.rb:70:in `_create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/attribute_methods/dirty.rb:140:in `_create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/callbacks.rb:346:in `block in _create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/callbacks.rb:98:in `run_callbacks'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/callbacks.rb:816:in `_run_create_callbacks'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/callbacks.rb:346:in `_create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/timestamp.rb:102:in `_create_record'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/persistence.rb:705:in `create_or_update'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/callbacks.rb:342:in `block in create_or_update'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/callbacks.rb:98:in `run_callbacks'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.6/lib/active_support/callbacks.rb:816:in `_run_save_callbacks'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/callbacks.rb:342:in `create_or_update'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/persistence.rb:308:in `save!'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/validations.rb:52:in `save!'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/transactions.rb:315:in `block in save!'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/transactions.rb:387:in `block in with_transaction_returning_status'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/transactions.rb:212:in `transaction'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/transactions.rb:385:in `with_transaction_returning_status'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/transactions.rb:315:in `save!'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.6/lib/active_record/suppressor.rb:48:in `save!'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/journal_mapper.rb:53:in `upsert_fts_target'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/batch_runner.rb:120:in `block (2 levels) in synchronize_fts_targets_internal'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:264:in `yield'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:264:in `block (2 levels) in iterate'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:262:in `each'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:262:in `each'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:262:in `block in iterate'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:267:in `each'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:267:in `each'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/tty-progressbar-0.18.2/lib/tty/progressbar.rb:267:in `iterate'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/batch_runner.rb:112:in `block in synchronize_fts_targets_internal'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/resolver.rb:43:in `each'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/resolver.rb:43:in `each'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/batch_runner.rb:107:in `synchronize_fts_targets_internal'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/full_text_search/batch_runner.rb:11:in `synchronize'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/tasks/full_text_search.rake:51:in `block (3 levels) in <top (required)>'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/tasks/full_text_search.rake:41:in `block (2 levels) in <top (required)>'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/plugins/redmine_full_text_search/lib/tasks/full_text_search.rake:50:in `block (2 levels) in <top (required)>'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/commands/rake/rake_command.rb:20:in `perform'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/command.rb:48:in `invoke'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/commands.rb:18:in `<top (required)>'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/app_loader.rb:59:in `require'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/app_loader.rb:59:in `block in exec_app'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/app_loader.rb:48:in `loop'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/app_loader.rb:48:in `exec_app'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/lib/rails/cli.rb:7:in `<top (required)>'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/exe/rails:10:in `require'
C:/Bitnami/redmine-4.2.2-0/apps/redmine/htdocs/vendor/bundle/ruby/2.6.0/gems/railties-5.2.6/exe/rails:10:in `<top (required)>'
bin/rails:29:in `load'
bin/rails:29:in `<main>'
kou commented 1 year ago

これは同期すると必ず発生するということですか?それとも何度かやっていると成功するようになりますか?

Stag0007 commented 1 year ago

同期を行うと必ず発生します。環境は下記でした。 4月に入ってからのチケットが検索不可となっていた為、 業務の都合上で本日一旦プラグインはアンインストールしております。 ・Redmine:4.2.2 ・Ruby:2.6.8 ・Ruby on Rails:5.2.6 ・MariaDB:10.2 ・Mroonga:11.0.6 ・full text search:1.0.4

kou commented 1 year ago

であればもう一度インストールして試してみてもらえますか? fts_targetsがスッキリきれいになって動くようになっているかもしれません。 動かなかったらまたアンインストールしていいです。

Stag0007 commented 1 year ago

承知しました。 しばらく作業出来ない為、再度インストールできれば結果記載します。

Stag0007 commented 1 year ago

アンインストールを行い、fts_***テーブルも削除済みを確認後、 再度インストールするも、DBのマイグレーションでエラーとなりました。

C:\Bitnami\redmine-4.2.2-0\apps\redmine\htdocs>bundle exec rake redmine:plugins:migrate RAILS_ENV=production
(略)
== 20190728022920 MroongaAddSourceTypeIdIndexToFtsTargets: migrating ==========
-- add_index(:fts_targets, :source_type_id)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: mroonga: repair: can't recover from crash while updating: [1]: <fts_targets>[523958][update]: SHOW KEYS FROM `fts_targets`

プラグインはマスターを再ダウンロードし、使用しました。

kou commented 1 year ago

最初のエラーとは違っていて、DBが壊れているエラーですね。 MariaDBを強制終了したりしましたか?

https://github.com/clear-code/redmine_full_text_search#mroonga はLinux用の復旧手順ですがWindowsでも読み替えれば使えるはずです。

kou commented 1 year ago

あと、Mroongaがだいぶ古いのでアップグレードしたほうがよさそうな感じはします。

Stag0007 commented 1 year ago

先月から下記の検索時にInternal Errorが発生し、 MariaDBが落ちる事象が発生し、そのまま再開させていました。 (

Mroongaのバージョン更新も含め、一旦再構築を予定しております。

Stag0007 commented 1 year ago

MaraiDB、Mroongaのバージョンアップを実施。 ・MariaDB:10.3.37 ・Mroonga:12.10 実施後にプラグインインストール、インデックス作成完了し、元々発生していた特定ワードでのInternal Errorも発生せず、 このまま様子見しようと思います。 ご回答いただき、ありがとうございました。

kou commented 1 year ago

根本原因がわからなくてもやっとしますが動くようになってよかったです。

ところで。。。 MariaDB 10.3系は今月25日にサポート終了なのでもっと新しいMariaDBの方がいい気はします。。。

https://mariadb.org/about/#maintenance-policy