AXOPEN

ERREUR : Problème de relecture d’une transaction par un Intranet Server

Description

Une erreur assez classique mais à fort impact est l’échec de la relecture d’une transaction par un Intranet Server. Dans le cas où l’Intranet Server concerné est en cours de démarrage cela peut en plus empêcher son chargement complet (l’IS démarre en boucle).

Concrètement ce problème se traduit dans les logs intranet par une pile d’erreur indiquant le numéro de la transaction que l’IS ne parvient pas à relire suivi d’une erreur du type « Received signal number 7 (EMT instruction) ».

Exemple :

[01/01/2010 08:30:00.000] - Main process - Reloading trn 102345
[01/01/2010 08:30:00.000] - Main process - Reloading trn 102346
[01/01/2010 08:30:00.000] - Main process - Reloading trn 102347
[01/01/2010 08:30:00.000] - Main process - New dataset #{ORDO-PROJECT:ORDO-PROJECT@MY_PROJECT003} loaded
[01/01/2010 08:30:00.000] - Main process - Reloading trn 102348 Suppression en cours 0% 
[01/01/2010 08:30:00.000] - Main process - Rapport d'erreur :   
Date :             01/01/2010 08:30:00   
Software version : Planisware 5 - build YYYY - SPX   
Server :           xxxxxxxx   
Client :           Unknown   
User   :           Unknown user   
Process :          Initial Lisp Listener   
Error  : "Error while doing operation on object #{KERNEL-ORDO:NETWORK@MY_PROJECT:MY_SUB_PROJECT}: 
Transaction REMOVE-OBJECT on object #{KERNEL-ORDO:NETWORK@MY_PROJECT:MY_SUB_PROJECT} [status CLEANING-INSTANCE] with arguments () 
Received signal number 7 (EMT instruction)" Evaluation stack: [...]

Lorsque l’erreur du type « signal number 7 » apparait on constate souvent au bout d’un certain temps le redémarrage de l’IS slave concerné voir de l’IS Master. Ici la transaction 102348 (suppression du sous-projet « MY_SUB_PROJECT » du projet « MY_PROJECT » n’a pas pu être rechargée correctement.

Lorsque ce problème survient soit l’instance est redémarrée par le watchdog, soit elle va afficher des erreur du type « Objects unfinalized » pour indiquer que certains objets ne sont pas à jour.

Cause

Cette erreur survient lorsque les transactions à relire sont de taille importante. Ces transactions sont en général dues à des modifications en masse de données depuis une autre instance ou plus fréquemment depuis une session client lourd (mises à jour, suppressions, créations en masse).

Résolution

Il n’existe pas à notre connaissance de solution « miracle » à ce problème mais seulement des bonnes pratiques à respecter si on souhaite éviter ce genre de problème. Il s’agit principalement de ne pas faire de mise à jour en masse des données via le client lourd lorsque les services Intranet sont démarrés. Sinon il est très probable que des erreurs du type « signal number 7 » vont apparaitre dans les logs des IS.