From 6de60ef29575adb6480850cff32b37c820ad396b Mon Sep 17 00:00:00 2001 From: Jason Colyer Date: Fri, 21 Dec 2018 14:55:26 -0600 Subject: Modified files.rb to handle tar error Changed the run_pipeline! function to instead use Open3.pipeline_start In doing so, the code is able to grab the last STDERR. In the case where the error is the one from older tar versions (relating to ./), it will not raise a Backup::Error. All other instances of command failure will result in Backup::Error being raised. --- lib/backup/files.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lib/backup/files.rb') diff --git a/lib/backup/files.rb b/lib/backup/files.rb index 0032ae8f84b..31ef354ebb8 100644 --- a/lib/backup/files.rb +++ b/lib/backup/files.rb @@ -71,8 +71,18 @@ module Backup end def run_pipeline!(cmd_list, options = {}) - status_list = Open3.pipeline(*cmd_list, options) - raise Backup::Error, 'Backup failed' unless status_list.compact.all?(&:success?) + err_r, err_w = IO.pipe + options[:err] = err_w + status = [] + Open3.pipeline_start(*cmd_list, options) do |threads| + err_w.close + threads.collect { |t| status.push(t.value) } + end + unless status.compact.all?(&:success?) + unless err_r.read =~ /^g?tar: \.: Cannot mkdir: No such file or directory/ + raise Backup::Error, 'Backup failed' + end + end end end end -- cgit v1.2.1 From 99b6f37fa525b1a19cccfe743d4f56d104c02c78 Mon Sep 17 00:00:00 2001 From: Jason Colyer Date: Wed, 9 Jan 2019 10:44:26 -0600 Subject: Modify file restore to rectify tar issue Changed run_pipeline! function to have use $ in regex Changed run_pipeline! function to use Open3.pipeline instead of Open3.pipeline_start --- lib/backup/files.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lib/backup/files.rb') diff --git a/lib/backup/files.rb b/lib/backup/files.rb index 31ef354ebb8..48cb01b5b82 100644 --- a/lib/backup/files.rb +++ b/lib/backup/files.rb @@ -73,13 +73,11 @@ module Backup def run_pipeline!(cmd_list, options = {}) err_r, err_w = IO.pipe options[:err] = err_w - status = [] - Open3.pipeline_start(*cmd_list, options) do |threads| - err_w.close - threads.collect { |t| status.push(t.value) } - end + status = Open3.pieline(*cmd_list, options) + err_w.close unless status.compact.all?(&:success?) - unless err_r.read =~ /^g?tar: \.: Cannot mkdir: No such file or directory/ + error = err_r.read + unless error =~ /^g?tar: \.: Cannot mkdir: No such file or directory$/ raise Backup::Error, 'Backup failed' end end -- cgit v1.2.1 From f88b464bf3bfa13dea33489d8f57e5380dbc00cd Mon Sep 17 00:00:00 2001 From: Jason Colyer Date: Tue, 15 Jan 2019 11:51:41 -0600 Subject: Modify file restore to rectify tar issue Adjusted run_pipeline! function to match rubocop syntax requirements Adjusted run_pipeline! function to use variable instead of string interpolation --- lib/backup/files.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lib/backup/files.rb') diff --git a/lib/backup/files.rb b/lib/backup/files.rb index 48cb01b5b82..550c932b2b5 100644 --- a/lib/backup/files.rb +++ b/lib/backup/files.rb @@ -75,12 +75,10 @@ module Backup options[:err] = err_w status = Open3.pieline(*cmd_list, options) err_w.close - unless status.compact.all?(&:success?) - error = err_r.read - unless error =~ /^g?tar: \.: Cannot mkdir: No such file or directory$/ - raise Backup::Error, 'Backup failed' - end - end + return if status.compact.all?(&:success?) + + regex = /^g?tar: \.: Cannot mkdir: No such file or directory$/ + raise Backup::Error, 'Backup failed' unless err_r.read =~ regex end end end -- cgit v1.2.1 From c74820db07f1f7348cd6fbe2a2d5307ba0e9eeba Mon Sep 17 00:00:00 2001 From: Jason Colyer Date: Wed, 16 Jan 2019 11:11:58 -0600 Subject: Modify file restore to rectify tar issue Fixed typo in run_pipeline! function -> Open3.pieline to Open3.pipeline --- lib/backup/files.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/backup/files.rb') diff --git a/lib/backup/files.rb b/lib/backup/files.rb index 550c932b2b5..2bac84846c5 100644 --- a/lib/backup/files.rb +++ b/lib/backup/files.rb @@ -73,7 +73,7 @@ module Backup def run_pipeline!(cmd_list, options = {}) err_r, err_w = IO.pipe options[:err] = err_w - status = Open3.pieline(*cmd_list, options) + status = Open3.pipeline(*cmd_list, options) err_w.close return if status.compact.all?(&:success?) -- cgit v1.2.1