From 573e62343cadeb92a3513f4c6568eb7357ef30d5 Mon Sep 17 00:00:00 2001
From: Emil Obreshkov <emil.obreshkov@cern.ch>
Date: Wed, 28 Mar 2018 18:05:10 +0000
Subject: [PATCH] Merge branch 'copy-rpm-eos-retry' into 'master'

RPM to EOS copy: 5 retries for mkdir and cp before counting failure as an error

See merge request atlas/athena!10083

(cherry picked from commit e74ddf61fc3228ba30ea81a96b6bd392da187e9e [formerly 492b0b9a15e082eaa45254b2a326b1f92c2e3133])

c1147375 RPM to EOS copy: 5 retries for mkdir and cp before counting failure as an error
356c6297 RPM to EOS copy: 6 retries (>10m tot) for mkdir and cp before counting failure as an error

Former-commit-id: 85302a414ffc07d1267541d7827a86723987f347
---
 Build/AtlasBuildScripts/copy_rpm_eos.sh       | 20 +++++++++++++++++--
 .../CscCalib/CscCalibAlgs/cmt/cdb.log         |  0
 2 files changed, 18 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/cmt/cdb.log

diff --git a/Build/AtlasBuildScripts/copy_rpm_eos.sh b/Build/AtlasBuildScripts/copy_rpm_eos.sh
index 38745d8d0eb7..9253ac2ef520 100755
--- a/Build/AtlasBuildScripts/copy_rpm_eos.sh
+++ b/Build/AtlasBuildScripts/copy_rpm_eos.sh
@@ -65,9 +65,25 @@ echo "====================================================="
 
 DESTDIR=${DESTDIR}/${BRANCH}/${ARCH}/${DDAY}
 
+_retry_() {
+    local cmd="$*" dt=16 retr=0
+    while ! $cmd ; do
+        if test $retr -ge 6 ; then
+            echo "ERROR: 6 retries of $cmd FAILED ... " >&2
+            return 1
+        fi
+        echo "WARNING: $cmd failed, waiting $dt sec ..."
+        sleep ${dt}s
+        dt=`expr $dt + $dt`
+        retr=`expr $retr + 1`
+    done
+    return 0
+}
+
+
 if [ ! -d ${DESTDIR} ] ; then 
    echo "mkdir -p ${DESTDIR}"
-   mkdir -p ${DESTDIR} 
+   _retry_ mkdir -p ${DESTDIR} 
    if [ ! -d ${DESTDIR} ] ; then ((ERROR_COUNT++)) ; fi  #avoid false positive eos error if the directory was actually created
 fi
 
@@ -79,7 +95,7 @@ if [ "${#arr_rpm[@]}" -le 0 ]; then
    for ele in "${arr_rpm[@]}" 
    do
       echo "Info: copying $ele to ${DESTDIR}"                                                 
-      cp -a $ele ${DESTDIR} || ((ERROR_COUNT++))
+      _retry_ cp -a $ele ${DESTDIR} || ((ERROR_COUNT++))
    done
 fi 
 echo "====================================================="
diff --git a/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/cmt/cdb.log b/MuonSpectrometer/MuonCalib/CscCalib/CscCalibAlgs/cmt/cdb.log
old mode 100644
new mode 100755
-- 
GitLab