Project export rake task isn't working
Summary
Project export rake task fails with the following error:
D, [2023-10-26T12:54:14.447063 #59219] DEBUG -- : ↳ app/models/import_export_upload.rb:25:in `retrieve_upload'
E, [2023-10-26T12:54:14.450277 #59219] ERROR -- : Exception: undefined method `-' for nil:NilClass
Gitlab::SafeRequestStore[key] -= 1
^
D, [2023-10-26T12:54:14.450298 #59219] DEBUG -- : ["/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/gitaly_client.rb:481:in `decrement_call_count'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/gitaly_client.rb:445:in `allow_n_plus_1_calls'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/export_task.rb:43:in `block (2 levels) in with_export'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/base_task.rb:21:in `block in disable_upload_object_storage'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/base_task.rb:29:in `overwrite_uploads_setting'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/base_task.rb:20:in `disable_upload_object_storage'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/export_task.rb:42:in `block in with_export'", "/Users/rodrigotomonari/Sites/g/gitlab/gems/gitlab-safe_request_store/lib/gitlab/safe_request_store.rb:66:in `enabling_request_store'", "/Users/rodrigotomonari/Sites/g/gitlab/gems/gitlab-safe_request_store/lib/gitlab/safe_request_store.rb:59:in `ensure_request_store'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/export_task.rb:38:in `with_export'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/gitlab/import_export/project/export_task.rb:17:in `export'", "/Users/rodrigotomonari/Sites/g/gitlab/lib/tasks/gitlab/import_export/export.rake:36:in `block (3 levels) in <main>'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:279:in `block in execute'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:279:in `each'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:279:in `execute'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/sentry-ruby-5.8.0/lib/sentry/rake.rb:26:in `execute'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:18:in `perform'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/railties-7.0.8/lib/rails/command.rb:51:in `invoke'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/railties-7.0.8/lib/rails/commands.rb:18:in `<main>'", "<internal:/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:38:in `require'", "<internal:/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:38:in `require'", "/Users/rodrigotomonari/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'", "bin/rails:4:in `<main>'"]
Steps to reproduce
Export a project using the rake task
EXPORT_DEBUG=true bin/rails 'gitlab:import_export:export[root,gitlab-org,gitlab-shell,project-export.tar.gz]'
Possible fixes
diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb
index 6dee9a404f48..3ee46019a064 100644
--- a/lib/gitlab/gitaly_client.rb
+++ b/lib/gitlab/gitaly_client.rb
@@ -491,6 +491,8 @@ def self.increment_call_count(key)
private_class_method :increment_call_count
def self.decrement_call_count(key)
+ return unless Gitlab::SafeRequestStore[key]
+
Gitlab::SafeRequestStore[key] -= 1
end
private_class_method :decrement_call_count
Edited by Rodrigo Tomonari