clear-code / redmine_full_text_search

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

"ArgumentError: string contains null byte" occurs when synchronize attachment #71

Closed a9zawa closed 5 years ago

a9zawa commented 5 years ago

RAILS_ENV=production bin/rails full_text_search:synchronize 実行時、 attachment の処理に入ると "ArgumentError: string contains null byte" がたびたび発生し、エラー終了します。 エラー終了後再度 synchronize を実行すると、処理は進みます。

エラーが発生した全てのファイルは確認できていませんが、文字化けした内容が含まれているファイルの処理で発生するようです。 エラーが発生したファイルから一部抜粋したテキストファイルを添付します。 (本プラグインを無効にした状態でこの抜粋ファイルをチケットに添付し、synchronize を行った際にエラーが発生することを確認済みです。) test.txt

以下に --trace を付けて実行した際のエラー時のコンソールログを記載します。

エラー時コンソールログ ``` rails aborted! ArgumentError: string contains null byte /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `async_exec_params' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `block (2 levels) in exec_no_cache' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:610:in `block in exec_no_cache' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications/instrumenter.rb:23:in `instrument' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:609:in `exec_no_cache' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `execute_and_clear' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:94:in `exec_delete' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:170:in `update' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `update' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/persistence.rb:197:in `_update_record' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/persistence.rb:696:in `_update_row' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/locking/optimistic.rb:80:in `_update_row' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/persistence.rb:719:in `_update_record' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/attribute_methods/dirty.rb:134:in `_update_record' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/callbacks.rb:350:in `block in _update_record' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:98:in `run_callbacks' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:816:in `_run_update_callbacks' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/callbacks.rb:350:in `_update_record' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/timestamp.rb:114:in `_update_record' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/persistence.rb:705:in `create_or_update' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/callbacks.rb:342:in `block in create_or_update' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:98:in `run_callbacks' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:816:in `_run_save_callbacks' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/callbacks.rb:342:in `create_or_update' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/persistence.rb:308:in `save!' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/validations.rb:52:in `save!' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/transactions.rb:315:in `block in save!' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/transactions.rb:387:in `block in with_transaction_returning_status' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/transactions.rb:212:in `transaction' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/transactions.rb:385:in `with_transaction_returning_status' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/transactions.rb:315:in `save!' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activerecord-5.2.3/lib/active_record/suppressor.rb:48:in `save!' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/attachment_mapper.rb:105:in `extract_text' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/mapper.rb:129:in `extract_content' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/attachment_mapper.rb:84:in `upsert_fts_target' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/batch_runner.rb:113:in `block (2 levels) in synchronize_fts_targets_internal' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:213:in `yield' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:213:in `block (2 levels) in iterate' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:211:in `each' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:211:in `each' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:211:in `block in iterate' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:216:in `each' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:216:in `each' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/tty-progressbar-0.17.0/lib/tty/progressbar.rb:216:in `iterate' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/batch_runner.rb:105:in `block in synchronize_fts_targets_internal' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/resolver.rb:43:in `each' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/resolver.rb:43:in `each' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/batch_runner.rb:100:in `synchronize_fts_targets_internal' /var/lib/redmine/plugins/full_text_search/lib/full_text_search/batch_runner.rb:11:in `synchronize' /var/lib/redmine/plugins/full_text_search/lib/tasks/full_text_search.rake:51:in `block (3 levels) in ' /var/lib/redmine/plugins/full_text_search/lib/tasks/full_text_search.rake:41:in `block (2 levels) in ' /var/lib/redmine/plugins/full_text_search/lib/tasks/full_text_search.rake:50:in `block (2 levels) in ' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `block in execute' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `each' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:273:in `execute' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:214:in `block in invoke_with_call_chain' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:194:in `invoke_with_call_chain' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/task.rb:183:in `invoke' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:160:in `invoke_task' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:116:in `block (2 levels) in top_level' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:116:in `each' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:116:in `block in top_level' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:125:in `run_with_threads' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:110:in `top_level' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:23:in `block in perform' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rake-12.3.3/lib/rake/application.rb:186:in `standard_exception_handling' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:20:in `perform' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/command.rb:48:in `invoke' /home/ubuntu/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-5.2.3/lib/rails/commands.rb:18:in `' bin/rails:4:in `require' bin/rails:4:in `
' Tasks: TOP => full_text_search:synchronize ```

環境情報

kou commented 5 years ago

U+0000 は削除するようにしました!