18 avril 2017

Linux : faire passer en arriere plan le job Unix en cours

Dans le cas où vous avez lancé sous Unix un traitement en avant plan ... mais qu'il est encore actif alors que l'heure de couper la connexion approche !

Sous les systèmes Linux vous pouvez faire passer le traitement en arrière plan :
  1. Taper "[ctrl]Z" ... le traitement est suspendu,
  2. Taper "bg" ... le traitement passe en arrière plan,
  3. Taper "disown" ... le traitement est retiré de la liste des jobs actifs 
Cette dernière opération permet de fermer la session sans que le traitement (rattaché initialement à la session SSH) soit tué.


/hradev/txt/tmp> monScript.sh > $LOG/monScript.log 2>&1
^Z

[1] + Stopped                  monScript.sh

/hradev/txt/tmp> jobs
[1] + Stopped                 
monScript.sh

/hradev/txt/tmp> bg
[1]    
monScript.sh& 
/hradev/txt/tmp> jobs
[1] +  Running                
monScript.sh

/hradev/txt/tmp> exit
You have running jobs
 
/hradev/txt/tmp> disown
/hradev/txt/tmp> exit

14 avril 2017

Boucle Unix de traitements parallélisés

Sur la base d'un post de PSkocik ... Ci joint un exemple de script shell qui parallélise des traitements en en limitant le nombre (un intérêt étant de ne pas tomber sur les limitations système - par exemple le nombre de processus actifs - ou tout simplement de ne pas effondrer le serveur !).

Ce n'est pas parfait, car dans un groupe de traitement on attendra la fin du plus long, mais c'est simple à mettre en place.

Dans cet exemple l'écriture du log de chaque traitement se fait dans un fichier temporaire distinct - puis est affiché ...


monTraitementAParalleliser() {
      local fLOG="${LOG}/monTraitement.${i}.log"

      date                   > "${fLOG}" 2>&1
      echo "Hello ${1} ..." >> "${fLOG}" 2>&1
      CODE_RETOUR=$?
      sleep 3   # Pour faire durer


      [ ${CODE_RETOUR} -gt 0 ] && touch "${TMP}/
monTraitement.err"
      cat "${fLOG}"
      rm -f "${fLOG}"
}


# Début du script
rm -f "${TMP}/monTraitement.err"

# Nombre de parallelisations
N=3
# Indice
i=0
 

for PARAM in Henri Albert David John Felix Richard
do
   # tous les N jobs, attente de fin des jobs
   i=$(($i%$N)); [ $i -eq 0 ] && wait ;i=$(($i+1));
   # Execution en parallele
   echo "Declenchement du traitement pour ${PARAM}"
   monTraitementAParalleliser "${
PARAM}" &
done
 

# Attente de fin des derniers jobs
wait


if [ -f "${TMP}/monTraitement.err" ]; then
   rm -f "${TMP}/monTraitement.err"
   exit 1
fi

exit 0

10 mars 2017

Erreur ASLM: Semaphore failure. Rerun as root

Sur un serveur Linux hébergeant HR Access, un script de sécurité a modifié les droits d'accès au fichier /var/aslmfsem.

Conséquence : plus aucun programme Cobol ne pouvait s'exécuter sur la machine ... Car ce fichier (sémaphore) sert lors du contrôle des licences d'exécution. 

  • Le TP est bloqué.
  • OpenHR ne redémarre pas (redémarrage figé)
  • Lors de l'exécution d'un batch, on trouve le message :

ASLM: Semaphore failure. Rerun as rootASLM: Errno 1013

Si cette erreur survient, contrôlez que le fichier existe, qu'il est propriété de root, et qu'il dispose des droits rw_rw_rw_.

Si le blocage persiste, envisagez de :
  • Exécuter $COBDIR/aslmf/apptrack option "6-Reinitialize Licensing",
  • $COBDIR/aslmf/initaslm,
  • Si nécessaire rebooter le system pour reinitialiser la memoire partagée,

Plus d'information sur le site de MicroFocus : community.microfocus.com : aslm-1013-semaphore-failure

27 février 2017

PA1I V PARAMETRE INCORRECT : FI

Vous pouvez depuis peu rencontrer ce message lors de l'exécution d'une chaîne NRB :


AS0FTBM2-00000000-PA1I V      PARAMETRE INCORRECT :  FI
AS0FTBM2-BBAD0014-ERREUR D'ACCES (FICHIERS) : M4/OPEN/35//


Il faut en fait lire la ligne d’avant : « PARAMETRE INCORRECT : FI » …
Et comprendre que le nom du fichier ne respecte pas les règles de sécurité.

En effet, des mises à jour de sécurité introduisent un contrôle de conformité des noms de fichiers : seuls certains répertoires sont autorisés, et les caractères utilisés doivent faire partie d'une liste blanche.

Ces contrôles peuvent être consultés dans la copy BBI - voire personnalisés par le projet.
Si besoin des témoins d’activation permette de débrancher le contrôle :

Témoin d"activation du contrôle des caractères
05              WPTC-FLGC      PICTURE X VALUE "1".
Témoin d"activation du contrôle des chaînes
05              WPTC-FLGS      PICTURE X VALUE "1".
 
Après personnalisation il est nécessaire de recompiler les exécutables de BOT, BOB, BSE et BSC.

12 janvier 2017

BMQ-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/42/DG/PREPARE/000000000000907

Michel m'indique que la subbn (Unix/Linux) perd les espaces au début des lignes données en parametre pour construire l'ordre SQL de sélection des dossiers.
Ce qui peut provoquer une erreur en "collant" deux termes initialement séparés.

Exemple avec un HRAccess Suite 9 :


                                    Phase BN

Sélection SQL de la population :
SELECT NUDOSS FROM ZD00 WHERE CDSTCO='XXX' and CDCODE IN ('A','B','CDE') AND
 IDGPRG=1000
                                    Phase BN

Rappel des paramètres saisis :

PA42SELECT NUDOSS FROM ZD00 WHERE CDSTCO='XXX' AND CDCODE IN ('A','B','CDE') AND
PA42IDGPRG=1000

Nom du Compte-Rendu d'exécution : TYBXBN.hr9ass



                Soumettre le job (Y/N/T) [N] ? t

*****************************************************************
*              Constitution d'une population batch              *
*****************************************************************


JOB : JRBN                            DATE : 2017/01/12 16:32:15


*-------------------------- STEP120N ---------------------------*
*              Constitution d'une population batch              *
*---------------------------------------------------------------*
*GE01BMP-BBAD0001-------------------------------------------------------------------------------------------------------
*GE01BMP-BBAD0002-IDENTIFICATION DU PROGRAMME : BMP/7.000/2013-04-22-15.16.25/F/
*GE01BMP-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2017-01-12-16.32.16
*ST01BMQ-BBAD0001-------------------------------------------------------------------------------------------------------
*ST01BMQ-BBAD0002-IDENTIFICATION DU PROGRAMME : BMQ/7.000/2014-09-10-16.57.51/F/

*ST01BMQ-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : S1/42/DG/PREPARE/000000000000907
SELECT NUDOSS FROM HR.ZD00 BMQ WHERE ( CDSTCO='XXX' AND CDCODE IN ('A','B','CDE') ANDIDGPRG=1000) 


Pour éviter cela, il est possible de modifier la variable IFS servant à indiquer au système les caractères séparateurs :


ZOPA42="XX"
IFSSVG=$IFS
IFS=''
echo "${L_ZOPA42} :"
while [ "$ZOPA42" ]
do
   read ZOPA42
   if [ "$ZOPA42"  ]
   then
      PA=1
      ZOPA42=`echo "$ZOPA42" | cut -c1-76 | $SIGACS/bin/tras "[a-z]" "[A-Z]"`
      echo PA42"$ZOPA42" >> $TMP/T120PA.$nupro
   else
      if [ $PA -eq 0 ] ; then exit; fi
   fi
done
clear
IFS=$IFSSVG
unset IFSSVG




11 janvier 2017

BLS-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : ZDAA/01/KJ/PREPA/000000000001000

Les programmes utilisant BLS ouvrent des curseurs sur les informations rattachées à leur processus. Dans certains cas (en particulier avec la chaîne d'export des données NOY), le nombre de curseurs ouverts dépasse le maximum autorisé :

*-------------------------- STEP120N ---------------------------*
*                    Exportation des données                    *
*---------------------------------------------------------------*
YIYZDBCG-BBAD0001-------------------------------------------------------------------------------------------------------
YIYZDBCG-BBAD0002-IDENTIFICATION DU PROGRAMME : BCG/7.000/2016-12-14-13.41.34/F/
YIYZDBCG-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2016-12-21-12.37.00
YIYZDBCG-BBAD0004-LISTE DES PARAMETRES LUS
YIYZDBCG-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
YIYZDBCG-00000000-PA83V
YIYZDBCG-00000000-PA85 P  0003P
YIYZDBCG-BBAD0005-LISTE DES PARAMETRES INTERPRETES ET UTILISES
YIYZDBCG-BBAD0006-....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
YIYZDBCG-00000000-PA83V
YIYZDBCG-00000000-PA85 P  0003P
YIYZDBLS-BBAD0001-------------------------------------------------------------------------------------------------------
YIYZDBLS-BBAD0002-IDENTIFICATION DU PROGRAMME : BLS/7.000/2016-12-14-13.43.57/F/
YIYZDBLS-BBAD0003-DEBUT DE TRAITEMENT   - HORODATAGE DE DEBUT : 2016-12-21-12.37.00
YIYZDBLS-BBAD0015-ERREUR D'ACCES (TABLE RELATIONNELLE) : ZDAA/01/KJ/PREPA/000000000001000
 
 Pour Oracle,
ORA-01000: maximum open cursors exceeded

En général, la limite est placée à 5000 voire 6000 ...

Pour en connaitre la valeur exécuter :
select value from v$parameter where name = 'open_cursors'

Essayez de detacher du processus les informations qui ne contiennent pas de données.
Sinon demandez à l'administrateur de modifier le paramètre Oracle open_cursors.
 

24 octobre 2016

HR Access 7.30.60 et les objets Tâches

Les objets Tâches sont utilisables depuis HR Studio 7.30.60. Ils permettent d'alléger la charge des actions manuelles à réaliser sous HRStudio. Pour les serveurs HR Access v7 ou v9 ne disposant pas de la fonctionnalité, un kit peut être demandé au Support. Dans de nombreux kits livrés par le support, des "Taches" sont maintenant livrées.

Le kit va notamment créer deux tables techniques : RC59 et RF90, reprendre les triggers de gestion des objets HR, toucher une soixantaine de programmes techniques BT* BU* BY* ainsi que les chaines NRT et des RO* ...




Après ouverture de HR Studio, pensez à modifier les droits de conception de votre utilisateur (droits de conception / Droits indépendants des projets) :
 

L’objet "Tâche" est accessible avec les objets de gestion d’environnement :


Pour l'alimenter il faut le créer et le garder ouvert. On peut alors :
  • L'alimenter en direct (pour le cas des détachements ou des suppressions),
  • Ou en navigant dans l'explorateur HRStudio par clic droit sur d'autres objets, choix "Créer une action" (validation, déploiement, suppression). 
  • Cela marche aussi pour les compteurs de paie !
 Les actions élémentaires sont triées. Il est possible d'en modifier l'ordonnancement, d'indiquer qu'elles sont "bloquantes", de forcer leur statut ("A effectuer", "Effectuée", "Ignorée") ... Mais une par une (on ne peut agir sur une sélection de tâches).

21 septembre 2016

Le mode diagnostique de HRaSpace

Le mode diagnostique de HRaSpace sert à l'équipe support pour analyser les dysfonctionnements de l'applicatif. Il peut aussi servir pour analyser les performances de transactions.

Avec la console Java


Il est possible d'activer le mode DEBUG de la console Java du poste client Windows :
Ouvrir le panneau de contrôle Java, onglet « Avancé », cocher les boites « Débogage »


Puis vider le cache de la JVM et du navigateur.


Dans la console Java, en tapant "5" on obtient les messages de DEBUG de l’applet

Plug-in Java 11.92.2.14
Utilisation de la version JRE 1.8.0_91-b14 Java HotSpot(TM) Client VM
Répertoire de base de l'utilisateur = d:\Profiles\digix
----------------------------------------------------
c:   effacer la fenêtre de la console
f:   finaliser les objets de la file d'attente de finalisation
g:   nettoyer la mémoire
h:   afficher ce message d'aide
l:   vider la liste des chargeurs de classes
m:   imprimer le relevé d'utilisation de la mémoire
o:   déclencher la journalisation
q:   masquer la console
r:   recharger la configuration des règles
s:   vider les propriétés système et de déploiement
t:   vider la liste des threads
v:   vider la pile des threads
x:   effacer le cache de chargeurs de classes
0-5: fixer le niveau de trace à <n>
----------------------------------------------------

[DEBUG] proxy - Retrieved result <RESPONSE <- R_GET_DOSSIER_DATA, 2 dossier(s)>
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec proxy=DIRECT
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec le cookie "JSESSIONID=58BE9B106C64695036464A3DFA8293F4"
[DEBUG] applt - Queueing a BLOB request ...
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec proxy=DIRECT
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec le cookie "JSESSIONID=58BE9B106C64695036464A3DFA8293F4"
[DEBUG] applt - Sending 1 BLOB request(s) to web application ...
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRBlob avec proxy=DIRECT
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRBlob avec le cookie "JSESSIONID=58BE9B106C64695036464A3DFA8293F4"
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec proxy=DIRECT
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec le cookie "JSESSIONID=58BE9B106C64695036464A3DFA8293F4"
[DEBUG] applt - Successfully sent 1 BLOB request(s) to web application
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec proxy=DIRECT
network: Connexion de http://hrserver:10181/hr-rich-client/hrservlet/HRTrace avec le cookie "JSESSIONID=58BE9B106C64695036464A3DFA8293F4"
[DEBUG] script - Population changed : false


Toutefois ces messages ne sont pas horodatés

Avec le mode diagnostique de HRaSpace

Pour pouvoir activer ce mode, il peut être nécessaire de le rendre accessible. Pour ceci consultez dans l'objet Topologie les propriétés technique du module HRaSpace :


Dans l'URL de HRaSpace, il faut ajouter "…/hraspace/portal?diagnostic=true "

Un bandeau s'affiche




Lors de la navigation, le serveur enregistre les éléments.
Ces répertoires peuvent être volumineux, il faut penser à les purger.

/hradev/hraspace/logs/hr-rich-client/WEB-INF/logs> ls -l
drwxr-x---    3 hradev   hragrp        256 Sep 21 11:58 diagnostic-lmJCoRCAn0EquywLjuReG

-rw-r-----    1 hrarec   hragrp   10967831 Sep 21 13:41 hr-rich-client.log

/hradev/hraspace/logs/hr-rich-client/WEB-INF/logs> ls -l diagnostic*
-rw-r-----    1 hradev   hrargrp      52354 Sep 21 11:59 DIGIX.log
-rw-r-----    1 hradev   hrargrp    4913863 Aug 15 11:31 PPCLIUNO.dic
drwxr-x---    3 hradev   hrargrp        256 Sep 21 11:58 TA0FR/


Quand on stoppe l'enregistrement, les fichiers créés sont téléchargeables


Dans le répertoire hr-rich-client ouvrir le fichier XXXXXXX.log

2016-09-21 11:25:10,514 - http-bio-10181-exec-21 - connection - DEBUG - Handled request S_GET_DOSSIER_DATA in 248 ms
2016-09-21 11:25:10,514 - http-bio-10181-exec-21 - HRProxyServlet - DEBUG - End send: 2016-09-21 11:25:10.514
2016-09-21 11:25:10,514 - http-bio-10181-exec-21 - HRProxyServlet - DEBUG - --------- 249 ms
2016-09-21 11:25:10,551
- http-bio-10181-exec-21 - ServletTrace - DEBUG - (Applet) [DEBUG] proxy - Retrieved result <RESPONSE <- R_GET_DOSSIER_DATA, 2 dossier(s)>
2016-09-21 11:25:10,594
- http-bio-10181-exec-21 - ServletTrace - DEBUG - (
Applet) [DEBUG] applt - Queueing a BLOB request ...
2016-09-21 11:25:10,638
- http-bio-10181-exec-21 - ServletTrace - DEBUG - (
Applet) [DEBUG] applt - Sending 1 BLOB request(s) to web application ...
2016-09-21 11:25:10,682 - http-bio-10181-exec-21 - hrweb - DEBUG - Processing a batch invokation of com.hraccess.openhr.blob.IUndoableBlobUpdateManager (1 request(s)) ...
2016-09-21 11:25:10,682 - http-bio-10181-exec-21 - hrweb - DEBUG - Processing request <RELOAD_BLOBS> [1 / 1] ...
2016-09-21 11:25:10,726
- http-bio-10181-exec-18 - ServletTrace - DEBUG - (
Applet) [DEBUG] applt - Successfully sent 1 BLOB request(s) to web application
2016-09-21 11:25:10,782
- http-bio-10181-exec-21 - ServletTrace - DEBUG - (
Applet) [DEBUG] script - Population changed : false

Ces logs permettent de suivre l’activité des Servlets (coté serveur Web),
Mais aussi celles de l’Applet ...

 
D'ici à ce que vous ayez déployé le client 7.40.10 sans applet !