Commit 57dfc0451d8a6cc7dfafe30166e50dad8163adc7
1 parent
b9dee2ca
Exists in
master
and in
1 other branch
Meilleure résilience (reprise après crash) du script UPDATE (v3.7.9.79)
grace au fichier ftpf (install/files_to_process.txt file) => permet de s'assurer que les script sql non exécutés (à cause crash ou stop script) le seront à l'itération suivante
Showing
4 changed files
with
60 additions
and
21 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -35,6 +35,8 @@ CHANGEMENTS |
35 | 35 | |
36 | 36 | - Renforcement des contrôles sur les dates pour éviter des incohérences (date achat, livraison, fin garantie...) |
37 | 37 | |
38 | +- Meilleure résilience (reprise après crash) du script UPDATE | |
39 | + | |
38 | 40 | |
39 | 41 | ------- |
40 | 42 | 06/07/2020 NEWS#1 : |
... | ... | @@ -74,8 +76,8 @@ Outre ces changements, voici d'autres changements importants : |
74 | 76 | ======= CHANGES ======= |
75 | 77 | |
76 | 78 | ------- |
77 | -30/07/2020 v3.7.9.78 (EP) | |
78 | - - (i) Meilleur résilience (reprise après crash) du script UPDATE avec fichier ftpf (files_to_process.txt file) | |
79 | +30/07/2020 v3.7.9.78-79 (EP) | |
80 | + - (i) Meilleure résilience (reprise après crash) du script UPDATE avec fichier ftpf (install/files_to_process.txt file) | |
79 | 81 | => permet de s'assurer que les script sql non exécutés (à cause crash ou stop script) le seront à l'itération suivante |
80 | 82 | |
81 | 83 | ------- | ... | ... |
README.md
... | ... | @@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes : |
43 | 43 | -------------------------------------------------------------------------------------------- |
44 | 44 | |
45 | 45 | Date: 30/07/2020 |
46 | -Version: 3.7.9.78 | |
46 | +Version: 3.7.9.79 | |
47 | 47 | |
48 | 48 | |
49 | 49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | ... | ... |
UPDATE
install/update.sh
... | ... | @@ -13,6 +13,10 @@ |
13 | 13 | |
14 | 14 | # (Bash Arrays : cf https://www.cyberciti.biz/faq/finding-bash-shell-array-length-elements/) |
15 | 15 | |
16 | + | |
17 | +# Ne pas vider le fichier $ftpf (CLEAN=1 pour le vider) | |
18 | +CLEAN=0 | |
19 | + | |
16 | 20 | # Normal mode |
17 | 21 | TEST=0 |
18 | 22 | # Test mode |
... | ... | @@ -23,15 +27,35 @@ db_update_scripts_folder="../database/update/script_sql" |
23 | 27 | #db_update_scripts_folder_tmp=/tmp/database_update |
24 | 28 | db_update_scripts_folder_tmp=/tmp/database_update_script_sql |
25 | 29 | |
30 | +# files_to_process.txt file | |
31 | +ftpf=files_to_process.txt | |
32 | + | |
26 | 33 | function abort() { |
34 | + error_msg=$1 | |
27 | 35 | echo "******************************************************" |
28 | 36 | echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!" |
29 | 37 | echo "******************************************************" |
38 | + echo $error_msg | |
30 | 39 | exit 1 |
31 | 40 | } |
32 | 41 | |
33 | 42 | |
34 | 43 | |
44 | + | |
45 | +# Ce script peut être appelé avec une option "-c" (CLEAN) en 1er argument ($1) | |
46 | +if [[ $1 != '' ]] ; then | |
47 | + [[ $1 != '-c' ]] && abort "Option $1 inconnue !" | |
48 | + CLEAN=1 | |
49 | +fi | |
50 | +# Si option CLEAN => vider le fichier $ftpf | |
51 | +if [[ $CLEAN == 1 ]] ; then | |
52 | + cat /dev/null > $ftpf | |
53 | + [[ -s $ftpf ]] && abort "Le fichier $ftpf n'est pas vide alors qu'il devrait l'être (1) !" | |
54 | + echo "Le fichier $ftpf a été vidé" | |
55 | +fi | |
56 | + | |
57 | + | |
58 | + | |
35 | 59 | # ---------------------------------------- |
36 | 60 | # 0a) Affichage de la version courante du logiciel |
37 | 61 | # ---------------------------------------- |
... | ... | @@ -155,8 +179,6 @@ fi |
155 | 179 | echo |
156 | 180 | echo "* 3) Mise à jour de la Base de Données (seulement si nécessaire) :" |
157 | 181 | |
158 | -# files_to_process.txt file | |
159 | -ftpf=files_to_process.txt | |
160 | 182 | # Créer le fichier files_to_process.txt s'il n'existe pas encore |
161 | 183 | [ ! -f $ftpf ] && touch $ftpf |
162 | 184 | |
... | ... | @@ -183,6 +205,7 @@ db_update_scripts_new=$( echo ${db_update_scripts_before[@]} ${db_update_scripts |
183 | 205 | # On ajoute les anciens fichiers (de l'itération précédente) restant à traiter |
184 | 206 | echo "- (a) Fichiers restant à traiter de l'itération précédente" |
185 | 207 | #cat $ftpf |
208 | +#if [[ $TEST == 2 ]] ; then | |
186 | 209 | if [[ $TEST == 1 ]] ; then |
187 | 210 | echo "db-update-2014-08-23.sql" > $ftpf |
188 | 211 | echo "db-update-2014-08-24.sql" >> $ftpf |
... | ... | @@ -217,13 +240,12 @@ db_update_scripts_new=(${db_update_scripts_new_tmp[*]}) |
217 | 240 | cat /dev/null > $ftpf |
218 | 241 | # Puis, on le remplit |
219 | 242 | for db_update_script_new in ${db_update_scripts_new[*]} ; do |
220 | - ###echo $db_update_script_new >> $ftpf | |
221 | - echo "" | |
243 | + echo $db_update_script_new >> $ftpf | |
222 | 244 | done |
223 | 245 | |
224 | -# Si ftpf est vide, rien à faire, on stoppe | |
225 | -if [[ $db_update_scripts_new == '' ]] ; then | |
246 | +# Si pas de nouveau fichier à traiter (ftpf est vide), rien à faire, on stoppe | |
226 | 247 | #if [ ! -s $ftpf ] ; then |
248 | +if [[ $db_update_scripts_new == '' ]] ; then | |
227 | 249 | #echo "Le fichier ftpf est vide" |
228 | 250 | echo "==> PAS NÉCESSAIRE" |
229 | 251 | echo |
... | ... | @@ -239,27 +261,28 @@ fi |
239 | 261 | #cat $ftpf |
240 | 262 | #echo $db_update_scripts_new |
241 | 263 | echo ${db_update_scripts_new[*]} |
264 | + | |
242 | 265 | # Remove files that were DELETED by "git pull" |
243 | 266 | for db_update_script_new in ${db_update_scripts_new[@]} ; do |
244 | -# [[ ! -f ../database/update/$db_update_script_new ]] && echo "$db_update_script_new sera ignoré car supprimé par le 'git pull'" # TODO: supprimer cet element du tableau | |
245 | 267 | [[ ! -f ../database/update/script_sql/$db_update_script_new ]] && echo "$db_update_script_new sera ignoré car supprimé par le 'git pull'" # TODO: supprimer cet element du tableau |
246 | 268 | done |
269 | + | |
247 | 270 | # On va dans le dossier database/update/ : |
248 | 271 | #cd $db_update_scripts_folder/ || abort |
249 | -#echo "* Exécuter ces scripts SQL (o/n) ? [o]" | |
250 | -#read do_it ; [[ -z $do_it ]] && do_it="o" | |
272 | +echo "* Exécuter ces scripts SQL (o/n) ? [o]" | |
273 | +read do_it ; [[ -z $do_it ]] && do_it="o" | |
251 | 274 | #echo $do_it |
252 | -#[[ $do_it != "o" ]] && exit 0 | |
253 | - | |
254 | -#echo "go on" | |
255 | -#exit | |
275 | +[[ $do_it != "o" ]] && exit 0 | |
256 | 276 | |
277 | +# Retour à database/update/ | |
257 | 278 | cd $db_update_scripts_folder/../ || abort |
258 | 279 | for db_update_script_new in ${db_update_scripts_new[@]} ; do |
259 | 280 | # Ignorer les fichiers supprimés par le "git pull" |
260 | 281 | #[[ ! -f $db_update_script_new ]] && continue |
261 | 282 | #[[ ! -f script_sql/$db_update_script_new ]] && continue |
262 | - if [[ -f script_sql/$db_update_script_new ]] ; then | |
283 | + if [[ ! -f script_sql/$db_update_script_new ]] ; then | |
284 | + echo "$db_update_script_new ignoré car supprimé par le 'git pull'" # TODO: supprimer cet element du tableau | |
285 | + else | |
263 | 286 | echo ; echo |
264 | 287 | #echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new (o/n) ? [o]" |
265 | 288 | echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new" |
... | ... | @@ -267,18 +290,30 @@ for db_update_script_new in ${db_update_scripts_new[@]} ; do |
267 | 290 | #if [[ $do_it == "o" ]] ; then |
268 | 291 | #ls -l ./$db_update_script_new_ || abort |
269 | 292 | #./$db_update_script_new || abort |
270 | - ./db-update.sh script_sql/$db_update_script_new || abort | |
293 | + ####./db-update.sh script_sql/$db_update_script_new || abort | |
271 | 294 | #fi |
272 | 295 | fi |
273 | 296 | # On supprime le fichier traité de $ftpf |
274 | - # TODO: | |
297 | + #echo "Suppression $db_update_script_new de $ftpf" | |
298 | + #echo "- avant suppr" | |
299 | + #cat ../../install/$ftpf | |
300 | + # For Mac OS : | |
301 | + sed -e "/$db_update_script_new/d" -i '' ../../install/$ftpf || abort | |
302 | + # For Linux : | |
303 | + #sed -e "/$db_update_script_new/d" -i ../../install/$ftpf || abort | |
304 | + #echo "- après suppr" | |
305 | + #cat ../../install/$ftpf | |
275 | 306 | done |
307 | + | |
308 | + | |
276 | 309 | #[[ $TEST == 1 ]] && (rm test.txt ; rm db-update-2014-*.sh) |
277 | 310 | [[ $TEST == 1 ]] && (rm script_sql/test.txt ; rm script_sql/db-update-2014-*.sql) |
278 | 311 | cd - >/dev/null |
279 | 312 | |
313 | +# A ce stade, $ftpf doit être vide, sinon abort | |
314 | +#cat $ftpf | |
315 | +[[ -s $ftpf ]] && abort "Le fichier $ftpf n'est pas vide alors qu'il devrait l'être (2) !" | |
280 | 316 | |
281 | 317 | |
282 | 318 | echo |
283 | 319 | #echo "=> MISE À JOUR TERMINÉE" |
284 | - | ... | ... |