Script d'objet metier perdu!

Quand j’ai voulu éditer un script existant, une pop s’est ouverte pour me proposer Java ou Rhino.

image

pas d’autre solution que d’en choisir l’un des 2.
j’ai donc choisi Script Rhino … mon script a entièrement disparu !!!

j’ai récupéré mon script sur mon environnement de recette.

je suis retournée une nouvelle fois sur mon objet, la pop up s’est à nouveau ouverte … j’ai choisi java, pour voir. et maintenant, impossible de scripter en rhino …

La popup apparaît quand l’objet n’a pas de code associé (je veux dire pas de document joint dans l’attribut “Source code”). Je ne vois pas trop comment le document aurait pu disparaitre tout seul, il y a forcément du y avoir quelque chose de subtil de fait (directement ou indirectement) pour que cet attribut soit remis à zero et/ou on est dans un cas très particulier. Bref en attendant d’en savoir plus je me permet de requalifier ce post en “Support”.

Pour ce qui est de retrouver la possibilité de choisir entre Java et Rhino il suffit de supprimer manuellement le document de l’attribut “Source code”, vous vous retrouverez alors dans le cas d’un objet sans code et il vous sera proposé de choisir le language:

absolument rien de subtil de fait.

je viens d’aillleurs de recopier mon script, de l’enregistrer et à nouveau la popoup s’affiche.

Pas de code source :

La pop-up s’affiche, je choisi Script Rhino :

je copie mon code :

la zone code source est toujours vide :

il y a bien un bug

Message d’erreur dans les logs :
2018-09-14 08:44:10,910 WARN [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|WARN|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: Designer can fix temporarily the object as a simple ObjectDB.

2018-09-14 08:44:10,910 ERROR [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|ERROR|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: ClassNotFoundException CrbAleMsg: checks definition and script compilation.

2018-09-14 08:44:10,662 WARN [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|WARN|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: Designer can fix temporarily the object as a simple ObjectDB.

2018-09-14 08:44:10,661 ERROR [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|ERROR|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: ClassNotFoundException CrbAleMsg: checks definition and script compilation.

2018-09-14 08:44:10,549 WARN [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|WARN|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: Designer can fix temporarily the object as a simple ObjectDB.

2018-09-14 08:44:10,548 ERROR [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|ERROR|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: ClassNotFoundException CrbAleMsg: checks definition and script compilation.

2018-09-14 08:44:10,410 INFO [com.simplicite.objects.System.ObjectInternal] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|INFO|designer|com.simplicite.objects.System.ObjectInternal|partialClearCache||Evénement: Partial clear cache for object CrbAleMsg

2018-09-14 08:44:05,317 INFO [com.simplicite.objects.System.ObjectInternal] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|INFO|designer|com.simplicite.objects.System.ObjectInternal|partialClearCache||Evénement: Partial clear cache for object CrbAleMsg

2018-09-14 08:43:59,909 WARN [com.simplicite.util.engine.CoreCache] SIMPLICITE|http://dev-sim:10338/alerte|/alerte|WARN|system|com.simplicite.util.engine.CoreCache|instantiateObject||Evénement: Designer can fix temporarily the object as a simple ObjectDB.

Nous ne reproduisons pas ce pb pour le moment mais nous continuons d’investiguer.

je ne peux plus rien scripter sur mon objet.

j’ai forcé la valeur en de Code source en récupérant le fichier .js de mon environnement de recette.
j’enregistre, je fais Editer le code. je vois mon script. je ferme et je perd tout.

le fichier Code source a disparu.

Oui n a bien compris qu’il y a un pb sur votre objet, mais on ne reproduit pas ce comportement sur d’autres objets sur nos instances de test donc on essaie juste de comprendre ce qui est particulier ici.

Tant qu’on ne reproduit pas une anomalie on ne peut pas la corriger. On vous tient au courant.

Au save se lance un “Partial clear cache for object CrbAleMsg”
qui tombe en erreur
“ClassNotFoundException CrbAleMsg: checks definition and script compilation.”
Il essaye de compiler du Java…

  • Avez vous cliqué sur “Script Rhino” ?
    qui devrait charger un ScriptedObjectDB et pas un classe Java CrbAleMsg

  • Avez vous ce pb sur tous vos scripts d’objet ? créez un objet “Test” sans rien pour vérifier.

oui je clique sur Scipt Rhino mais il n’a pas l’air de le prendre en compte

non, ce n’est pas sur tous les objets. juste sur celui là.

Du coup les logs de ClassNotFound sont dues à votre essai de faire du Java.
Va falloir chercher un peu plus :

  1. logs ?
  • Fermez tous les autres onglets de l’editeur de script
  • Avez vous plus de traces (log serveur et aussi console du navigateur F12), lors du save depuis l’éditeur de script à nous fournir ?
  1. fonctionnement de l’objet ?
    sans passer par l’éditeur, en uploadant directement le source dans le champ “Code source” + vider tous les caches : est ce que l’objet utilise bien son script ?

  2. Précédente version ok ?
    y a-t-il eu d’autres changements de paramétrage sur cet objet (ou ses dépendances) entre la recette et la dev ? ou juste un upgrade P21 ?

1-j’ai fermé tous les autres script, rien de plus dans les logs. ni dans la console du navigateur

2- j’ai déjà testé cette manip : le vidage de cache vide le champs Code source …

3- je n’ai pas ce pb en recette, qui est branchée sur la release P20.

j’ai l’impression qu’il a gardé en mémoire le choix de script java que j’ai fait à un moment pour tester. depuis, il ne veut rien savoir

Et avec un arret-relance de l’instance ?

toujours pareil.

le code source disparait

j’ai aussi essayé de ré-importer mon module.
ça n’a rien changé

Et comme ça ?

  1. arret de l’instance
  2. recherche d’un éventuel fichier .ser dans l’arboresence Tomcat => le supprimer
  3. redémarrege de l’instance

Rien dans le moteur ne remet le champ du code source à vide en cas de non compilation ou erreur sur l’objet. Au pire ça ne charge pas la classe ou le script avec des stacktraces dans les logs, et l’objet ne s’affiche pas (sauf comme le dit la trace le designer qui peut afficher l’objet ObjectDB sans script donc sans regle de gestion pour debug).

Vous pouvez :

  • Analyser ou nous fournir les logs de votre import de module dans la supervision des imports
  • Activer temporairement les trace SQL (param LOG_SQL_USER et LOG_SQL_SYSTEM) et voir quelles requètes contiennent “obj_script_id” lors du vidage de cache.

il faut aussi voir si la classe Java n’a pas été supprimée au passage de java à rhino.
dans tomcat/webapps/ROOT/WEB-INF :

  • chercher s’il y a un “CrbAleMsg.java” dans src/
  • vider bin/ et build/dynamic.jar

Dans votre module, quel est le nom du document du fichier source, car son extension .js ou .java détermine ensuite la classe de l’objet. S’il s’appelle CrbAleMsg.java mais contient du script rhino ça va pas bien marcher.

Sinon il va falloir nous donner votre module pour analyse (et l’installer sur votre environnement sur notre dev) car on ne reproduit pas ce comportement.

et il va falloir le traiter avant de pouvoir pousser la P21 en release.

Logs de l’import de module :

et le code source est toujours vide :
image

je télécharge CrbAleMsg.js (récupéré de la recette), j’édite le code, je le vois.
je ferme le script, le code source a disparu …

il n’y a rien aucun fichier sous tomcat/webapps/ROOT/WEB-INF/src :
image

Le fichier ne s’enregistre pas, il est normalement dans de /dbdoc

Autres pistes :

  • le disque est plein ?
  • le module s’importe-t-il sur une autre instance P21 ?

Sinon peux-tu m’envoyer en MP le zip de ce module ?

  • pour voir s’il s’importe ailleurs = pb d’instance ou de vm
  • sinon on va trouver la faille au debugger = corriger le module ou le loader

j’ai déployé le module sur une autre instance, ça fonctionne bien.

il n’y a pas de pb de disque.
je t’ai envoyé le zip par mail

Alors l’instance /tomcat doit avoir (ou a du avoir) un problème technique ou un décalage de patch/libs.
Il faut s’assurer que les sim upgrade sont à jour et ok.

Un premier controle est de faire une comparaison manuelle des 2 instances (celle qui fonctionne et l’autre) des répertoires tomcat/lib et tomcat/webapps/ROOT/WEB-INF/lib
il est déjà arrivé par le passé que certaines libs étaient en double dans des versions différentes, ce qui générait des pb bizarre du classloader.

Sinon je n’ai pas reçu ton email, trop gros ?