1 |
paus |
1.1 |
#!/bin/bash
|
2 |
|
|
#===================================================================================================
|
3 |
|
|
# Assume a local files is found to be broken. Go through a full recovery:
|
4 |
|
|
# + check they are really broken
|
5 |
|
|
# + check they are not broken on Tier-2
|
6 |
|
|
# + remove broken file from Tier-3 and download the proper one from Tier-2
|
7 |
|
|
# + in case also Tier-2 is broken check CERN and download even back to Tier-2
|
8 |
|
|
#===================================================================================================
|
9 |
|
|
MIT_LOC="/mnt/hadoop/cms/store/user/paus"
|
10 |
|
|
CERN_LOC="/castor/cern.ch/user/p/paus"
|
11 |
|
|
|
12 |
|
|
FILE="$1"
|
13 |
|
|
FLAG="$2"
|
14 |
|
|
|
15 |
|
|
fullFile="$FILE"
|
16 |
|
|
file=`basename $fullFile`
|
17 |
|
|
dir=`dirname $fullFile`
|
18 |
|
|
dset=`basename $dir`
|
19 |
|
|
tmp=`dirname $dir`
|
20 |
|
|
version=`basename $tmp`
|
21 |
|
|
tmp=`dirname $tmp`
|
22 |
|
|
cfg=`basename $tmp`
|
23 |
|
|
|
24 |
|
|
test=`list $dir/$file 2> /dev/null`
|
25 |
|
|
if [ "$test" != "" ]
|
26 |
|
|
then
|
27 |
|
|
echo ""
|
28 |
|
|
echo " TEST - File exists, check integrity."
|
29 |
|
|
echo " $dir/$file"
|
30 |
|
|
test=`catalogFile.sh $dir $file 2> /dev/null | grep XX-CATALOG-XX`
|
31 |
|
|
if [ "$test" != "" ]
|
32 |
|
|
then
|
33 |
|
|
echo " STOP - File seems to be fine?! Leave it."
|
34 |
|
|
echo " $dir/$file"
|
35 |
|
|
echo ""
|
36 |
|
|
exit 0
|
37 |
|
|
else
|
38 |
|
|
echo " File is really broken. Remove it."
|
39 |
|
|
rm -f $dir/$file
|
40 |
|
|
fi
|
41 |
|
|
else
|
42 |
|
|
echo ""
|
43 |
|
|
echo " TEST - File does not exist."
|
44 |
|
|
echo " $dir/$file"
|
45 |
|
|
fi
|
46 |
|
|
|
47 |
|
|
# once we arrive here, the file is gone and we are recovering
|
48 |
|
|
|
49 |
|
|
echo " Start recovery from Tier-2."
|
50 |
|
|
test=`catalogFile.sh $MIT_LOC/$cfg/$version/$dset $file 2> /dev/null | grep XX-CATALOG-XX`
|
51 |
|
|
if [ "$test" != "" ]
|
52 |
|
|
then
|
53 |
|
|
echo ""
|
54 |
|
|
echo " GOOD - File seems to be fine on Tier-2. Grab it."
|
55 |
|
|
#echo "downloadFile.sh $MIT_LOC/$cfg/$version/$dset/$file $dir/$file"
|
56 |
|
|
downloadFile.sh $MIT_LOC/$cfg/$version/$dset/$file $dir/$file >& /dev/null
|
57 |
|
|
echo " -> Download status: $?"
|
58 |
|
|
test=`catalogFile.sh $dir $file 2> /dev/null | grep XX-CATALOG-XX`
|
59 |
|
|
if [ "$test" != "" ]
|
60 |
|
|
then
|
61 |
|
|
echo ""
|
62 |
|
|
echo " GOOD - Recovery completed successfully."
|
63 |
|
|
echo " $dir/$file"
|
64 |
|
|
echo ""
|
65 |
|
|
else
|
66 |
|
|
echo " ERRO - File is broken again. Removing it."
|
67 |
|
|
echo " $dir/$file"
|
68 |
|
|
echo ""
|
69 |
|
|
rm -f $dir/$file
|
70 |
|
|
fi
|
71 |
|
|
else
|
72 |
|
|
echo ""
|
73 |
|
|
echo " STOP - File seems to be broken on Tier-2."
|
74 |
|
|
# in case both Tier-2 and Tier-3 broken and requested removed both
|
75 |
|
|
if [ "$FLAG" == "remove" ]
|
76 |
|
|
then
|
77 |
|
|
remove --exe --catalog $dir/$file
|
78 |
|
|
remove --exe --catalog $MIT_LOC/$cfg/$version/$dset/$file
|
79 |
|
|
fi
|
80 |
|
|
echo " Start recovery from CERN."
|
81 |
|
|
test=`list $CERN_LOC/$cfg/$version/$dset/$file 2> /dev/null`
|
82 |
|
|
if [ "$test" != "" ]
|
83 |
|
|
then
|
84 |
|
|
echo ""
|
85 |
|
|
echo " GOOD - File seems to be available at CERN. Grab it."
|
86 |
|
|
downloadFile.sh $CERN_LOC/$cfg/$version/$dset/$file $dir/$file >& /dev/null
|
87 |
|
|
echo " -> Download status: $?"
|
88 |
|
|
test=`catalogFile.sh $dir $file 2> /dev/null | grep XX-CATALOG-XX`
|
89 |
|
|
if [ "$test" != "" ]
|
90 |
|
|
then
|
91 |
|
|
echo ""
|
92 |
|
|
echo " GOOD - Recovery completed successfully from CERN."
|
93 |
|
|
echo " $dir/$file"
|
94 |
|
|
# try to recover Tier-2 from CERN
|
95 |
|
|
echo " Start recovery on Tier-2."
|
96 |
|
|
downloadFile.sh $CERN_LOC/$cfg/$version/$dset/$file $MIT_LOC/$cfg/$version/$dset/$file \
|
97 |
|
|
>& /dev/null
|
98 |
|
|
echo " -> Download (to Tier-2) status: $?"
|
99 |
|
|
test=`catalogFile.sh $MIT_LOC/$cfg/$version/$dset $file 2> /dev/null | grep XX-CATALOG-XX`
|
100 |
|
|
if [ "$test" != "" ]
|
101 |
|
|
then
|
102 |
|
|
echo ""
|
103 |
|
|
echo " GOOD - Recovery on Tier-2 completed successfully from CERN."
|
104 |
|
|
echo " $MIT_LOC/$cfg/$version/$dset/$file"
|
105 |
|
|
echo ""
|
106 |
|
|
else
|
107 |
|
|
echo " ERRO - File on tier-2 is still broken. Stop process"
|
108 |
|
|
echo " $MIT_LOC/$cfg/$version/$dset/$file"
|
109 |
|
|
echo ""
|
110 |
|
|
fi
|
111 |
|
|
else
|
112 |
|
|
echo " ERRO - File is broken again. Removing it."
|
113 |
|
|
echo " $dir/$file"
|
114 |
|
|
echo ""
|
115 |
|
|
rm -f $dir/$file
|
116 |
|
|
fi
|
117 |
|
|
else
|
118 |
|
|
echo ""
|
119 |
|
|
echo " STOP - File seems not to be available at CERN."
|
120 |
|
|
echo ""
|
121 |
|
|
fi
|
122 |
|
|
fi
|
123 |
|
|
|
124 |
|
|
exit 0
|