Date d'exploitation VTOM ne bascule pas

Les outils pour débugger une date bloquée :

  • Vérifier ce qui bloque la date : tchkdate /nom=<nom date> (ou pour avoir un rapide coup d’oeil sur l’état des dates : tlist date -v
  • Analyse/Historique : rechercher sur la date pour voir quand et par quel moteur elle a basculé

Pour rappel, une date commune à plusieurs environnements n’est vraiment pas recommandée.

Deux exemples de problèmes :

  • Des jobs de l’environnement A avec une date A sont à venir et attendent indéfiniment des ressources (pour x ou y raison)
    • la date ne basculera pas à J+1
    • les jobs de l’environnement B avec la date A resteront bloqués à leur état tant que la date ne basculera pas
  • A l’inverse, et au hasard, ça sera le premier moteur, A ou B, qui fera basculer la date A à J+1 (pour peu que tous les jobs liés à cette date soient statués)

    • à J+1 le moteur qui n’aura pas fait basculer la date ne fera pas de treset (mise AVENIR) des jobs liés à cette date. Résultat, vous aurez des jobs à l’état TERMINE (par exemple) avec la date au 25/05 alors qu’ils n’ont tourné que, et seulement que, le 24/05

Une petite astuce pour lister les dates d’exploitation VTOM se retrouvant sur plusieurs jobs de différents environnements. (attention à bien désallouer une date affectée à un environnement non approprié mais à auncune app/job)

$ tlist env/date | sort -k"2,2" | awk '{print $2}'| uniq -c | awk '$1 > 1'

$  tlist jobs | sort -u -k"5,5" -k"1,1" | awk '{print $5}' | uniq -c | awk '$1 > 1'
   2 datey
   2 datex

Attention aussi aux dates d’exploitation différentes au sein d’un même bloc d’applications (liées entre elles). C’est possible d’avoir des dates différentes (hebdo, mensuelle par ex.) mais il faut savoir ce qu’on fait.

De base, je dirais qu’un bloc d’application devrait avoir la même date d’exploitation (attention aux copiés/collés surtout).

Petit astuce pour les lister :

vi env_app_date.sql
.separator /
select e.NAME, a.NAME, d.NAME
from applications a
left join environments e on a.ENV_SID = e.ENV_SID
left join dates d on a.DATE_SID = d.DATE_SID or (ifnull(a.DATE_SID,'') = '' and e.DATE_SID = d.DATE_SID)
;

vtexport -x > vtexport.xml
vthttpd -dump vthttpd.dat
sqlite3 vthttpd.dat < env_app_date.sql > apps_dateexp.txt

while read line
do 
  parent_dateexp=$(egrep "^`echo $line | cut -f1 -d" "`/" apps_dateexp.txt | cut -f3 -d"/");
  child_dateexp=$(egrep "^`echo $line | cut -f2 -d" "`/" apps_dateexp.txt | cut -f3 -d"/") ;
  if test "$child_dateexp" != "$parent_dateexp"
  then
    echo $line $parent_dateexp $child_dateexp
  fi
done < <(sed -e 's|^[        ]*<Link parent="\([^"/]*/[^"/]*\)" child="\([^"]*\)".*$|\1 \2|g' -e 'tx' -e 'd' -e ':x' vtexport.xml)