FIX: Do not change directory when decompressing S3 inventory

In sidekiq, jobs are run in multiple threads within the same process. `cd` affects the entire process, so can cause unexpected issues in other running jobs.
This commit is contained in:
David Taylor 2019-06-13 17:13:50 +01:00
parent 66b15b9d87
commit ed21128ee6
2 changed files with 5 additions and 7 deletions

View File

@ -23,8 +23,8 @@ module Discourse
end
class Utils
def self.execute_command(*command, failure_message: "", success_status_codes: [0])
stdout, stderr, status = Open3.capture3(*command)
def self.execute_command(*command, failure_message: "", success_status_codes: [0], chdir: ".")
stdout, stderr, status = Open3.capture3(*command, chdir: chdir)
if !status.exited? || !success_status_codes.include?(status.exitstatus)
failure_message = "#{failure_message}\n" if !failure_message.blank?

View File

@ -125,11 +125,9 @@ class S3Inventory
end
def decompress_inventory_files
FileUtils.cd(tmp_directory) do
files.each do |file|
log "Decompressing inventory file '#{file[:filename]}', this may take a while..."
Discourse::Utils.execute_command('gzip', '--decompress', file[:filename], failure_message: "Failed to decompress inventory file '#{file[:filename]}'.")
end
files.each do |file|
log "Decompressing inventory file '#{file[:filename]}', this may take a while..."
Discourse::Utils.execute_command('gzip', '--decompress', file[:filename], failure_message: "Failed to decompress inventory file '#{file[:filename]}'.", chdir: tmp_directory)
end
end