Rake task `db:seed_fu` aborted when running with `db:drop` together
Summary
Rake task db:seed_fu
aborted when running with db:drop
together, but succeeded when running alone.
Aborted when running:
bundle exec rake db:drop db:create db:schema:load db:migrate db:seed_fu
Succeeded when running:
bundle exec rake db:drop db:create db:schema:load db:migrate
bundle exec rake db:seed_fu
Steps to reproduce
bundle exec rake dev:setup
or
bundle exec rake db:drop db:create db:schema:load db:migrate db:seed_fu
What is the current bug behavior?
db:seed_fu
aborted on 02_application_settings.rb
What is the expected correct behavior?
db:seed_fu
task succeeds.
Relevant logs and/or screenshots
== Seed from /Users/simple/data/persper/drepo-gitlab/gitlab/db/fixtures/development/01_admin.rb
**************************************************
⛔️ WARNING: Sidekiq testing API enabled, but this is not the test environment. Your jobs will not go to Redis.
**************************************************
.
OK
== Seed from /Users/simple/data/persper/drepo-gitlab/gitlab/db/fixtures/development/02_application_settings.rb
Creating the default ApplicationSetting record.
Enable hashed storage for every new projects.
rake aborted!
NoMethodError: undefined method `update!' for nil:NilClass
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:46:in `eval'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:46:in `eval'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:46:in `block (2 levels) in run_file'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:58:in `block in open'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:57:in `open'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:57:in `open'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:36:in `block in run_file'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/activerecord-5.0.7.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/activerecord-5.0.7.2/lib/active_record/transactions.rb:211:in `transaction'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:35:in `run_file'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:26:in `block in run'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:25:in `each'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu/runner.rb:25:in `run'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/seed-fu.rb:29:in `seed'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/seed-fu-2.3.7/lib/tasks/seed_fu.rake:36:in `block (2 levels) in <main>'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/bin/ruby_executable_hooks:24:in `eval'
/Users/simple/.rvm/gems/ruby-2.5.3@gitlab/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => db:seed_fu
(See full trace by running task with --trace)
Possible fixes
I think when db:seed_fu
running togegher with other tasks, the previous tasks cached the application setting.
Maybe we can add ApplicationSetting.expire
before this line: