ERREUR : Problème de communication avec la BDD après arrêt-relance en crontab

Cet article explique pourquoi le lancement du module Connect en crontab unix peut poser problème.
Thibault GONINMis à jour le 1 Août 2011

Description

Afin d’automatiser larrêt-relance du progiciel P5 on peut utiliser OPX Services Scheduler qui fonctionne sur toutes les plateformes. Sur les serveurs UNIX, on peut être amené à utiliser la fonctionnalité CRONTAB pour gérer les arrêt-relances de l’application (en particulier sur des environnements de test ou de recette).

Si l’on programme l’arrêt-relance de P5 dans la crontab de l’utilisateur « root » en exécutant les scripts d’arrêt-relance standard P5 « stop-opx2 » et « start_opx2 » on ne rencontrera pas de problème particulier.

En revanche si l’on choisit de lancer directement le script « start_opx2_connect » ou un script équivalent directement dans la crontab de l’utilisateur applicatif on rencontrera une erreur d’accès à la base de données dans les logs applicatifs et l’application ne démarrera pas (le chargement bouclera en erreur).

 

Cause

Lorsqu’on lance un traitement dans la crontab, l’environnement (.profile unix) de l’utilisateur n’est pas chargé par défaut. Or pour fonctionner correctement le module Connect doit connaitre les paramètres d’environnement liés à la base de données. Le module Connect sera bien lancé mais en l’absence de ces paramètres d’environnement chargés au démarrage du Connect la connexion à la BDD sera impossible.

Dans le cas où on lance les scripts « stop-opx2 » et « startopx2 » avec root il n’y a aucun problème puisque ce script contient la commande « su – _user_applicatif » qui va forcer le chargement du fichier .profile avant d’exécuter la commande.

 

Résolution

La solution à ce problème consiste donc à rajouter dans le script unix qui lance le module Connect la commande

« . ./.profile » qui va permettre de forcer le chargement de l’environnement de l’utilisateur applicatif avant le lancement du module Connect.

Note : le chargement du .profile n’est pas nécessaire pour l’arrêt du Connect, seulement pour son lancement.