From 91eec24ec1ab9f4986a21afeaa209de39e807dc9 Mon Sep 17 00:00:00 2001 From: Courtney Oka Date: Thu, 2 Apr 2020 16:15:44 -0700 Subject: [PATCH 01/17] with notes --- share/github-backup-utils/ghe-restore-repositories | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index c87c8b421..66e40d07e 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -139,6 +139,9 @@ fi # rsync all the repository networks to the git server where they belong. # One rsync invocation per server available. + +# NOTES(oakeyc): Can we parallelize the calls to each server? (this was attempted in https://github.com/github/backup-utils/pull/456/files) +# We could leverage changes: https://github.com/github/backup-utils/pull/597/files bm_start "$(basename $0) - Restoring repository networks" for file_list in $tempdir/*.rsync; do if $CLUSTER; then @@ -172,6 +175,8 @@ fi bm_start "$(basename $0) - Updating repository info data" if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then ghe_verbose "* Transferring repository info data" + + # NOTES(oakeyc): Can we parallelize the calls to each host? for hostname in $hostnames; do if ! ghe-rsync -av --delete \ -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ From 874ba4d2c44f54bb8fadf418b34658610e646576 Mon Sep 17 00:00:00 2001 From: Courtney Oka Date: Thu, 2 Apr 2020 16:42:11 -0700 Subject: [PATCH 02/17] rough draft parallel --- .../ghe-restore-repositories | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 66e40d07e..b7f2bd5fb 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -139,9 +139,6 @@ fi # rsync all the repository networks to the git server where they belong. # One rsync invocation per server available. - -# NOTES(oakeyc): Can we parallelize the calls to each server? (this was attempted in https://github.com/github/backup-utils/pull/456/files) -# We could leverage changes: https://github.com/github/backup-utils/pull/597/files bm_start "$(basename $0) - Restoring repository networks" for file_list in $tempdir/*.rsync; do if $CLUSTER; then @@ -155,8 +152,17 @@ for file_list in $tempdir/*.rsync; do --rsync-path="sudo -u git rsync" \ --files-from=$file_list \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/./" \ - "$server:$GHE_REMOTE_DATA_USER_DIR/repositories/" 1>&3 + "$server:$GHE_REMOTE_DATA_USER_DIR/repositories/" 1>&3 & +done +for pid in $(jobs -p); do + wait $pid + ret_code=$? + if [ "$ret_code" != "0" ]; then + echo "$pid exited $ret_code" + #exit $ret_code + fi done + bm_end "$(basename $0) - Restoring repository networks" # Tell dgit about the repositories restored @@ -176,16 +182,24 @@ bm_start "$(basename $0) - Updating repository info data" if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then ghe_verbose "* Transferring repository info data" - # NOTES(oakeyc): Can we parallelize the calls to each host? for hostname in $hostnames; do - if ! ghe-rsync -av --delete \ + + ghe-rsync -av --delete \ -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ --rsync-path="sudo -u git rsync" \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info/" \ - "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3; then - echo "Error restoring /data/repositories/info to $hostname" 1>&2 + "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3 & + done + + for pid in $(jobs -p); do + wait $pid + ret_code=$? + if [ "$ret_code" != "0" ]; then + echo "$pid exited $ret_code" + #exit $ret_code fi done + else ghe_verbose "* Removing repository info data" if $CLUSTER; then From b0e6f27fbe1b5a6603488c6afcbdaf264957307c Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Tue, 7 Apr 2020 15:38:31 +0000 Subject: [PATCH 03/17] Terminate any background jobs when exiting. --- share/github-backup-utils/ghe-restore-repositories | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index b7f2bd5fb..9f7b9dbdc 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -63,6 +63,11 @@ if $CLUSTER; then fi cleanup() { + # Kill any backgrounded rsync jobs + for pid in $(jobs -p); do + kill -KILL $pid > /dev/null 2>&1 || true + done + for hostname in $hostnames; do ghe-gc-enable $ssh_config_file_opt $hostname:$port || true done @@ -152,8 +157,9 @@ for file_list in $tempdir/*.rsync; do --rsync-path="sudo -u git rsync" \ --files-from=$file_list \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/./" \ - "$server:$GHE_REMOTE_DATA_USER_DIR/repositories/" 1>&3 & + "$server:$GHE_REMOTE_DATA_USER_DIR/repositories/" 1>&3 2>&3 & done + for pid in $(jobs -p); do wait $pid ret_code=$? @@ -188,7 +194,7 @@ if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ --rsync-path="sudo -u git rsync" \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info/" \ - "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3 & + "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3 2>&3 & done for pid in $(jobs -p); do From 01d430e23d6dfc6b6fc7b83bc9119e88e56f77ee Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Wed, 8 Apr 2020 13:23:23 +0000 Subject: [PATCH 04/17] Run repository network rsync in parallel, with configurable max jobs. --- .../ghe-restore-repositories | 56 +++++++++---------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 9f7b9dbdc..3f6cee3ca 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -10,6 +10,9 @@ set -e # shellcheck source=share/github-backup-utils/ghe-backup-config . "$( dirname "${BASH_SOURCE[0]}" )/ghe-backup-config" +# Check to make sure moreutils parallel is installed and working properly +ghe_parallel_check + # Show usage and bail with no arguments [ -z "$*" ] && print_usage @@ -63,11 +66,6 @@ if $CLUSTER; then fi cleanup() { - # Kill any backgrounded rsync jobs - for pid in $(jobs -p); do - kill -KILL $pid > /dev/null 2>&1 || true - done - for hostname in $hostnames; do ghe-gc-enable $ssh_config_file_opt $hostname:$port || true done @@ -145,30 +143,36 @@ fi # rsync all the repository networks to the git server where they belong. # One rsync invocation per server available. bm_start "$(basename $0) - Restoring repository networks" +rsync_commands=() for file_list in $tempdir/*.rsync; do if $CLUSTER; then server=$(basename $file_list .rsync) else server=$host fi - ghe_verbose "* Transferring repository networks to $server ..." - ghe-rsync -avrR --delete \ - -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ - --rsync-path="sudo -u git rsync" \ - --files-from=$file_list \ - "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/./" \ - "$server:$GHE_REMOTE_DATA_USER_DIR/repositories/" 1>&3 2>&3 & -done -for pid in $(jobs -p); do - wait $pid - ret_code=$? - if [ "$ret_code" != "0" ]; then - echo "$pid exited $ret_code" - #exit $ret_code - fi + rsync_commands+=(" + if [ -n \"$GHE_VERBOSE\" ]; then + echo \"* Transferring repository networks to $server ...\" 1>&3 + fi + + ghe-rsync -avrR --delete \ + -e \"ssh -q $opts -p $port $ssh_config_file_opt -l $user\" \ + --rsync-path=\"sudo -u git rsync\" \ + --files-from=$file_list \ + \"$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/./\" \ + \"$server:$GHE_REMOTE_DATA_USER_DIR/repositories/\" 1>&3 + ") done +if [ "$GHE_PARALLEL_ENABLED" = "yes" ]; then + $GHE_PARALLEL_COMMAND -j $GHE_PARALLEL_RSYNC_MAX_JOBS -- "${rsync_commands[@]}" +else + for c in "${rsync_commands[@]}"; do + eval "$c" + done +fi + bm_end "$(basename $0) - Restoring repository networks" # Tell dgit about the repositories restored @@ -189,21 +193,11 @@ if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then ghe_verbose "* Transferring repository info data" for hostname in $hostnames; do - ghe-rsync -av --delete \ -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ --rsync-path="sudo -u git rsync" \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info/" \ - "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3 2>&3 & - done - - for pid in $(jobs -p); do - wait $pid - ret_code=$? - if [ "$ret_code" != "0" ]; then - echo "$pid exited $ret_code" - #exit $ret_code - fi + "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3 done else From f1a16f5b5b7c289588468560fe9d2024f8a3800f Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Wed, 8 Apr 2020 16:56:31 +0000 Subject: [PATCH 05/17] Default GHE_PARALLEL_MAX_RSYNC_JOBS to same as GHE_PARALLEL_MAX_JOBS if not set. --- share/github-backup-utils/ghe-backup-config | 8 ++++++++ share/github-backup-utils/ghe-restore-repositories | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/share/github-backup-utils/ghe-backup-config b/share/github-backup-utils/ghe-backup-config index 13247f43c..396a818bd 100755 --- a/share/github-backup-utils/ghe-backup-config +++ b/share/github-backup-utils/ghe-backup-config @@ -85,10 +85,18 @@ ghe_parallel_check() { if [ -n "$GHE_PARALLEL_MAX_JOBS" ]; then GHE_PARALLEL_COMMAND_OPTIONS="-j $GHE_PARALLEL_MAX_JOBS" + # Default to the number of max rsync jobs to the same as GHE_PARALLEL_MAX_JOBS, if not set. + # This is only applicable to ghe-restore-repositories currently. + : ${GHE_PARALLEL_MAX_RSYNC_JOBS:="$GHE_PARALLEL_MAX_JOBS"} + fi + + if [ -n "$GHE_PARALLEL_MAX_RSYNC_JOBS" ]; then + GHE_PARALLEL_RSYNC_COMMAND_OPTIONS="-j $GHE_PARALLEL_MAX_RSYNC_JOBS" fi if [ -n "$GHE_PARALLEL_MAX_LOAD" ]; then GHE_PARALLEL_COMMAND_OPTIONS+=" -l $GHE_PARALLEL_MAX_LOAD" + GHE_PARALLEL_RSYNC_COMMAND_OPTIONS+=" -l $GHE_PARALLEL_MAX_LOAD" fi } diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 3f6cee3ca..97fa83a88 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -166,7 +166,7 @@ for file_list in $tempdir/*.rsync; do done if [ "$GHE_PARALLEL_ENABLED" = "yes" ]; then - $GHE_PARALLEL_COMMAND -j $GHE_PARALLEL_RSYNC_MAX_JOBS -- "${rsync_commands[@]}" + $GHE_PARALLEL_COMMAND $GHE_PARALLEL_RSYNC_COMMAND_OPTIONS -- "${rsync_commands[@]}" else for c in "${rsync_commands[@]}"; do eval "$c" From 9f390d5be5aac6e6f92e0a1c1c5179384f275bdc Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Wed, 8 Apr 2020 17:02:18 +0000 Subject: [PATCH 06/17] Add GHE_PARALLEL_RSYNC_MAX_JOBS to config example --- backup.config-example | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backup.config-example b/backup.config-example index a1b4c0870..8cb3d424f 100644 --- a/backup.config-example +++ b/backup.config-example @@ -73,6 +73,13 @@ GHE_NUM_SNAPSHOTS=10 # WARNING: this feature is in beta. #GHE_PARALLEL_MAX_JOBS=2 +# Sets the maximum number of rsync jobs to run in parallel. Defaults to the +# configured GHE_PARALLEL_MAX_JOBS, or the number of available processing +# units on the machine. +# +# WARNING: this feature is in beta. +# GHE_PARALLEL_RSYNC_MAX_JOBS=3 + # When jobs are running in parallel wait as needed to avoid starting new jobs # when the system's load average is not below the specified percentage. Defaults to # unrestricted. From 574cb2b8600557d3ae2c0578184d7e91c7058321 Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Fri, 10 Apr 2020 15:53:44 +0000 Subject: [PATCH 07/17] fix typo in GHE_PARALLEL_RSYNC_MAX_JOBS --- share/github-backup-utils/ghe-backup-config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/github-backup-utils/ghe-backup-config b/share/github-backup-utils/ghe-backup-config index 396a818bd..65ad13ada 100755 --- a/share/github-backup-utils/ghe-backup-config +++ b/share/github-backup-utils/ghe-backup-config @@ -87,11 +87,11 @@ ghe_parallel_check() { GHE_PARALLEL_COMMAND_OPTIONS="-j $GHE_PARALLEL_MAX_JOBS" # Default to the number of max rsync jobs to the same as GHE_PARALLEL_MAX_JOBS, if not set. # This is only applicable to ghe-restore-repositories currently. - : ${GHE_PARALLEL_MAX_RSYNC_JOBS:="$GHE_PARALLEL_MAX_JOBS"} + : ${GHE_PARALLEL_RSYNC_MAX_JOBS:="$GHE_PARALLEL_MAX_JOBS"} fi - if [ -n "$GHE_PARALLEL_MAX_RSYNC_JOBS" ]; then - GHE_PARALLEL_RSYNC_COMMAND_OPTIONS="-j $GHE_PARALLEL_MAX_RSYNC_JOBS" + if [ -n "$GHE_PARALLEL_RSYNC_MAX_JOBS" ]; then + GHE_PARALLEL_RSYNC_COMMAND_OPTIONS="-j $GHE_PARALLEL_RSYNC_MAX_JOBS" fi if [ -n "$GHE_PARALLEL_MAX_LOAD" ]; then From 384a91c8beccef4f3f2fc710df844c9fd0337b9e Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Fri, 10 Apr 2020 15:49:41 -0700 Subject: [PATCH 08/17] WIP: show file_list contents --- share/github-backup-utils/ghe-restore-repositories | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 97fa83a88..0a25c8009 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -153,7 +153,8 @@ for file_list in $tempdir/*.rsync; do rsync_commands+=(" if [ -n \"$GHE_VERBOSE\" ]; then - echo \"* Transferring repository networks to $server ...\" 1>&3 + echo \"* Transferring repository networks to $server ($file_list) ...\" 1>&3 + cat $file_list fi ghe-rsync -avrR --delete \ From c07afd9d43bd83486749bc8184dd6de58c8820f5 Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Mon, 13 Apr 2020 23:04:52 -0700 Subject: [PATCH 09/17] fix tests by passing "--copy-dirlinks" argument --- test/test-ghe-restore-parallel.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test-ghe-restore-parallel.sh b/test/test-ghe-restore-parallel.sh index 835cbdd29..bfa38849e 100755 --- a/test/test-ghe-restore-parallel.sh +++ b/test/test-ghe-restore-parallel.sh @@ -3,6 +3,7 @@ set -e export GHE_PARALLEL_ENABLED=yes +export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks" # handle symlink directories for tests TESTS_DIR="$PWD/$(dirname "$0")" # shellcheck source=test/test-ghe-restore.sh From 14d3aacfe3f0b7a90aed2e03c6b81fd7dde5af2b Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Mon, 13 Apr 2020 23:10:14 -0700 Subject: [PATCH 10/17] use temp rsync directory for parallel restore test --- test/test-ghe-restore-parallel.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/test-ghe-restore-parallel.sh b/test/test-ghe-restore-parallel.sh index bfa38849e..a99da61e5 100755 --- a/test/test-ghe-restore-parallel.sh +++ b/test/test-ghe-restore-parallel.sh @@ -2,8 +2,11 @@ # ghe-restore command tests run in parallel set -e +# use tempdir to fix rsync file issues in parallel execution +tempdir=$(mktemp -d -t backup-utils-restore-temp-XXXXXX) + export GHE_PARALLEL_ENABLED=yes -export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks" # handle symlink directories for tests +export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks --temp-dir=$tempdir" # handle symlink directories for tests TESTS_DIR="$PWD/$(dirname "$0")" # shellcheck source=test/test-ghe-restore.sh From c6daeaf6acb92038741aa6c87e1a504ecd17d2a2 Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Mon, 13 Apr 2020 23:14:03 -0700 Subject: [PATCH 11/17] more detailed comment --- test/test-ghe-restore-parallel.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/test-ghe-restore-parallel.sh b/test/test-ghe-restore-parallel.sh index a99da61e5..a62cdea41 100755 --- a/test/test-ghe-restore-parallel.sh +++ b/test/test-ghe-restore-parallel.sh @@ -2,11 +2,13 @@ # ghe-restore command tests run in parallel set -e -# use tempdir to fix rsync file issues in parallel execution -tempdir=$(mktemp -d -t backup-utils-restore-temp-XXXXXX) - export GHE_PARALLEL_ENABLED=yes -export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks --temp-dir=$tempdir" # handle symlink directories for tests + +# use temp dir to fix rsync file issues in parallel execution: +# we are imitating remote server by local files, and running rsync in parallel may cause +# race conditions when two processes writing to same folder +tempdir=$(mktemp -d -t backup-utils-restore-temp-XXXXXX) +export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks --temp-dir=$tempdir" TESTS_DIR="$PWD/$(dirname "$0")" # shellcheck source=test/test-ghe-restore.sh From 43933d1c83737d703b7e117b4779de14e7a0694d Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Mon, 13 Apr 2020 23:20:32 -0700 Subject: [PATCH 12/17] revert "Updating repository info data" changes --- share/github-backup-utils/ghe-restore-repositories | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 0a25c8009..9dd0f1459 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -194,11 +194,13 @@ if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then ghe_verbose "* Transferring repository info data" for hostname in $hostnames; do - ghe-rsync -av --delete \ + if ! ghe-rsync -av --delete \ -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ --rsync-path="sudo -u git rsync" \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info/" \ - "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3 + "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3; then + echo "Error restoring /data/repositories/info to $hostname" 1>&2 + fi done else From 4f2374f9702373caedd4a330eb22a76d944362e0 Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Mon, 13 Apr 2020 23:21:10 -0700 Subject: [PATCH 13/17] fix extra space --- share/github-backup-utils/ghe-restore-repositories | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 9dd0f1459..276994050 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -199,7 +199,7 @@ if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then --rsync-path="sudo -u git rsync" \ "$GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info/" \ "$hostname:$GHE_REMOTE_DATA_USER_DIR/repositories/info" 1>&3; then - echo "Error restoring /data/repositories/info to $hostname" 1>&2 + echo "Error restoring /data/repositories/info to $hostname" 1>&2 fi done From d3216ba062decbd8318e5dbf1902008a1cddcc32 Mon Sep 17 00:00:00 2001 From: Evgenii Khramkov Date: Mon, 13 Apr 2020 23:21:49 -0700 Subject: [PATCH 14/17] fix extra lines --- share/github-backup-utils/ghe-restore-repositories | 2 -- 1 file changed, 2 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index 276994050..d499db5a4 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -192,7 +192,6 @@ fi bm_start "$(basename $0) - Updating repository info data" if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then ghe_verbose "* Transferring repository info data" - for hostname in $hostnames; do if ! ghe-rsync -av --delete \ -e "ssh -q $opts -p $port $ssh_config_file_opt -l $user" \ @@ -202,7 +201,6 @@ if [ -d $GHE_DATA_DIR/$GHE_RESTORE_SNAPSHOT/repositories/info ]; then echo "Error restoring /data/repositories/info to $hostname" 1>&2 fi done - else ghe_verbose "* Removing repository info data" if $CLUSTER; then From 7af23f734569ca5eb91b4f6de9250fd41efb3b75 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Tue, 14 Apr 2020 11:44:44 +0000 Subject: [PATCH 15/17] Remove `cat $file_list` and echo verbose output to fd3 --- share/github-backup-utils/ghe-restore-repositories | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index d499db5a4..e5f028e7c 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -152,10 +152,7 @@ for file_list in $tempdir/*.rsync; do fi rsync_commands+=(" - if [ -n \"$GHE_VERBOSE\" ]; then - echo \"* Transferring repository networks to $server ($file_list) ...\" 1>&3 - cat $file_list - fi + echo \"* Transferring repository networks to $server ($file_list) ...\" 1>&3 ghe-rsync -avrR --delete \ -e \"ssh -q $opts -p $port $ssh_config_file_opt -l $user\" \ From 95a631879285d0e4df7713512152c00515d9e707 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Tue, 14 Apr 2020 11:54:40 +0000 Subject: [PATCH 16/17] Guard on GHE_VERBOSE again. More descriptive variable name. --- share/github-backup-utils/ghe-restore-repositories | 4 +++- test/test-ghe-restore-parallel.sh | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index e5f028e7c..affa72e4b 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -152,7 +152,9 @@ for file_list in $tempdir/*.rsync; do fi rsync_commands+=(" - echo \"* Transferring repository networks to $server ($file_list) ...\" 1>&3 + if [ -n "$GHE_VERBOSE" ]; then + echo \"* Transferring repository networks to $server ($file_list) ...\" 1>&3 + fi ghe-rsync -avrR --delete \ -e \"ssh -q $opts -p $port $ssh_config_file_opt -l $user\" \ diff --git a/test/test-ghe-restore-parallel.sh b/test/test-ghe-restore-parallel.sh index a62cdea41..35d85d2d0 100755 --- a/test/test-ghe-restore-parallel.sh +++ b/test/test-ghe-restore-parallel.sh @@ -7,8 +7,8 @@ export GHE_PARALLEL_ENABLED=yes # use temp dir to fix rsync file issues in parallel execution: # we are imitating remote server by local files, and running rsync in parallel may cause # race conditions when two processes writing to same folder -tempdir=$(mktemp -d -t backup-utils-restore-temp-XXXXXX) -export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks --temp-dir=$tempdir" +parallel_rsync_tempdir=$(mktemp -d -t backup-utils-restore-temp-XXXXXX) +export GHE_EXTRA_RSYNC_OPTS="--copy-dirlinks --temp-dir=$parallel_rsync_tempdir" TESTS_DIR="$PWD/$(dirname "$0")" # shellcheck source=test/test-ghe-restore.sh From e4fba3725c8d945fac9fc2b84ef82a23bf34a8f8 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Tue, 14 Apr 2020 12:12:26 +0000 Subject: [PATCH 17/17] Escape GHE_VERBOSE check --- share/github-backup-utils/ghe-restore-repositories | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/github-backup-utils/ghe-restore-repositories b/share/github-backup-utils/ghe-restore-repositories index affa72e4b..201f20092 100755 --- a/share/github-backup-utils/ghe-restore-repositories +++ b/share/github-backup-utils/ghe-restore-repositories @@ -152,7 +152,7 @@ for file_list in $tempdir/*.rsync; do fi rsync_commands+=(" - if [ -n "$GHE_VERBOSE" ]; then + if [ -n \"$GHE_VERBOSE\" ]; then echo \"* Transferring repository networks to $server ($file_list) ...\" 1>&3 fi