Commit 57dfc0451d8a6cc7dfafe30166e50dad8163adc7

Authored by Etienne Pallier
1 parent b9dee2ca
Exists in master and in 1 other branch dev

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
1 1 #!/usr/bin/env bash
2 2  
  3 +# $1 : Option "-c" pour CLEAN du fichier ftpf
  4 +
3 5 cd install/
4   -./update.sh
  6 +./update.sh $1
5 7  
... ...
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   -
... ...