Migration de 5.3.71 vers 6 script rhino

Bonjour,

J’ai vu sur un autre topic Migration V5 vers V6 bloquée à cause de script Rhino encore présent qu’il fallait supprimer le code source si il était présent


Sauf qu’en 5.3.71 ce n’est plus la même façon de faire

et même principe pour le responsive5 est ce qu’il faut que je supprime toutes les ressources pour que la migration fonctionne car actuellement j’ai le même message d’erreur

UPGRADE FAULT
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
This version 6 does not support Rhino script anymore to implements Hooks.\n==> All legacy Rhino scripts have to be refactored to more efficient Java classes.
==> Rhino scripts are only dedicated to expressions, calculated fields and constraints.
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

De plus, j’ai regardé dans la table ’ m_script_usage` je n’ai que du code partagé sur des objets métiers mais en java donc est ce que ça peut poser problème étant donné que ce ne sont pas des scripts rhino ?

Merci d’avance et je ne sais pas si j’ai été assez clair

Le message indique qu’il vous reste du code serveur en Rhino (i.e. du JS serveur) rien à voir avec les ressources JS (i.e. du JS client), surtout celle de la disposition qu’il ne faut surtout pas supprimer.

Vous devez vérifier la présence de ces scripts Rhino avant d’envisager un upgrade en v6 où cela sera bloquant.

Vous pouvez identifier ces script Rhino en exécutant la requête:

select dbd_path from m_document
where dbd_path like '%.js'
and dbd_path not like 'Resource/%'
and dbd_path not like 'ModelTemplate/%'

Ex:

PS: je vois que vous utilisez la révision 5.3.71 de fin mai, celle-ci n’est pas la révision de maintenance à jour de la v5, c’est la 5.3.73, il est important de toujours partir d’une révision parfaitement à jour pour effectuer une migration de version majeure et de même il faut toujours cibler la révision la plus à jour => au jour d’aujourd’hui il faut donc uniquement envisager un upgrade de la 5.3.73 vers la 6.2.12. La page Versions | Simplicité Documentation vous indique les révisions à jour:

Bonjour,

Nous avons quelques résultats suite à la requête sql, néanmoins le fichier lié à disposition est tout de même présent est-ce qu’il faut que je le supprime ou non ?

Merci d’avance

Le .js de la Disposition n’est pas une ressource (sinon son path serait en Resource/*), c’est donc bien un script Rhino.

Tous ces fichiers Rhino sont à supprimer avant upgrade en v6, normalement ils auraient dû l’être à moins que certaines mises à jour v5 ne se soient pas passées correctement, c’est bien dans les patchs de la 5.3, ex:

Merci donc de commencer par vous mettre à jour en v5 = en 5.3.73, ce sera l’occasion du (re)passage des patches de la 5.3, et s’ils sont toujours là à l’arrivée il faudra nous fournir l’ensemble des logs de supervision de l’import des fichiers patches pour voir ce qui a pu se passer de travers

Nous venons de passer en 5.3.73. La requête affiche toujours les mêmes résultats de fichiers.
Quels sont les fichiers à fournir et comment le faire?
Est ce qu’il faut aussi passer les patchs manuellement ou est ce que la montée de version est censé le faire tout seul ?

Merci d’avance

Les fichiers patchs s’exécutent normalement automatiquement au démarrage après upgrade de la webapp.

Vous devez avoir des records de supervision d’import correspondant aux fichiers patch:

Ce qui m’interesse ce sont ces records de supervision pour voir si certains sont en erreur et analyser les logs. Merci de m’exporter en XML les records correspondant au dernier upgrade.

Avoir ces fichiers Rhino résiduels est inquiétant car ça pourrait indiquer que d’autres patches système n’ont pas été passés…

Pour voir si le pb n’est pas “juste” un pb de RAZ de fichier, pouvez vous essayez de passer manuellement ce patch unitaire sur l’objet métier WebNews:

<simplicite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.simplicite.fr/base" xsi:schemaLocation="http://www.simplicite.fr/base https://www.simplicite.io/resources/schemas/base.xsd">
<object>
	<name>ObjectInternal</name>
	<action>update</action>
	<data>
		<obo_name>WebNews</obo_name>
		<obo_script_id></obo_script_id>
	</data>
</object>
</simplicite>

Le script Rhino associé à cet objet devrait disparaitre, dites moi si c’est le cas

Bonjour,

Je viens de passer le patch unitaire mais je me retrouve toujours avec le même résultat

Supervision_imports.xml (3.1 MB)

ci-joint le fichier xml de l’auto-upgrade

Ok pouvez vous essayer avec le patch unitaire suivant (avec balise XML autoclosed pour obo_script_id)? Si ça ne supprime toujours pas le script associé à l’objet WebNews c’est qu’il y a une subtilité qu’on investiguera plus avant (merci de nous fournir le health check complet pour qu’on puisse tester dans des conditions les plus proches possibles des votres)

<simplicite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.simplicite.fr/base" xsi:schemaLocation="http://www.simplicite.fr/base https://www.simplicite.io/resources/schemas/base.xsd">
<object>
	<name>ObjectInternal</name>
	<action>update</action>
	<data>
		<obo_name>WebNews</obo_name>
		<obo_script_id/>
	</data>
</object>
</simplicite>

PS: Au pire vous pouvez toujours supprimer manuellement (via le user designer) les scripts résiduels associés aux objets système en question (cf. le path des résultats de le requête) ex:

NB:il faut généralement ouvrir les formulaires en mode “étendu” pour accéder à l’attribut contenant le script

Bonjour,
Je viens de passer le script il y a toujours la trace dans la requête sql donc je vous montre le cheminement.



J’ai rien dans le code source de l’objet et pourtant quand je regarde la requête il me ressort bien un script de je ne sais.

Et je ne peux pas envoyer le heatlh il y a trop d’info sensible que je ne peux pas sortir du ministère
Donc j’avoue que je ne sais pas quoi faire

S’agissant du health check, peut-on avoir uniquement la version de la base (j’imagine que c’est du PostgreSQL) ?

Après test, l’anomalie est visiblement qu’un patch qui vide l’attribut code (Java ou Rhino) d’un objet ne purge pas le document de la table des documents.

Nous allons regarder ça de plus près et vous fournir un mécanisme de purge adapté de la table des documents (car l’action de synchronisation des docs ne semble pas résoudre le problème).

Merci beaucoup pour la réponse, la version c’est postgresql 15.5.
Nous restons en attente.
En prévision du passage de version pensez vous qu’après ce problème il peut y avoir d’autres problématique?

Bonjour

Nous avons corrigé l’anomalie qui laissait des scripts Rhino orphelins dans la table m_document lors du passage des patches, ce sera livré lors des prochaines révisions.

Dans votre cas le “mal est fait” (= suite au passage des patches système, les objets système patchés ne référencent plus les scripts Rhino mais ceux ci sont encore dans la table m_document or c’est au niveau de cette table que que le test pre-upgrade v6 est fait) => il faut donc purger manuellement ces documents orphelins, voici les requêtes SQL à passer:

delete from m_document d
where d.dbd_path like '%.js'
and d.dbd_object_id = (select row_id from m_object where obj_name = 'ObjectInternal')
and d.dbd_field_id = (select row_id from m_field where fld_name = 'obo_script_id')
and d.row_id not in (select obj_script_id from m_object where obj_type = 'O');

delete from m_document d
where d.dbd_path like '%.js'
and d.dbd_object_id = (select row_id from m_object where obj_name = 'ObjectExternal')
and d.dbd_field_id = (select row_id from m_field where fld_name = 'obe_script_id')
and d.row_id not in (select obj_script_id from m_object where obj_type = 'E');

delete from m_document d
where d.dbd_path like '%.js'
and d.dbd_object_id = (select row_id from m_object where obj_name = 'Disposition')
and d.dbd_field_id = (select row_id from m_field where fld_name = 'dis_script_id')
and d.row_id not in (select dis_script_id from m_disposition);

delete from m_document d
where d.dbd_path like '%.js'
and d.dbd_object_id = (select row_id from m_object where obj_name = 'BPMProcess')
and d.dbd_field_id = (select row_id from m_field where fld_name = 'pcs_script_id')
and d.row_id not in (select pcs_script_id from bpm_process);

delete from m_document d
where d.dbd_path like '%.js'
and d.dbd_object_id = (select row_id from m_object where obj_name = 'Script')
and d.dbd_field_id = (select row_id from m_field where fld_name = 'scr_file')
and d.row_id not in (select scr_file from m_script);

delete from m_document d
where d.dbd_path like '%.js'
and d.dbd_object_id = (select row_id from m_object where obj_name = 'Adapter')
and d.dbd_field_id = (select row_id from m_field where fld_name = 'adp_script_id')
and d.row_id not in (select adp_script_id from m_adapter);

PS: nous avons ajouté ces requêtes de “nettoyage” aux patches des prochaines révisions, leur passage manuel c’est uniquement en attendant la release de ces prochaines révisions

Bonjour,

Je viens de passer les scripts

Et ensuite je suis passer en version 6 et j’ai toujours le même message d’erreur j’avoue ne pas savoir quoi faire.

FATAL|UPGRADE FAULTZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
This version 6 does not support Rhino script anymore to implements Hooks.
==> All legacy Rhino scripts have to be refactored to more efficient Java classes.
==> Rhino scripts are only dedicated to expressions, calculated fields and constraints.
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

Si vous avez toujours ce message c’est nécessairement qu’il reste des documents de type script Rhino…

Que donne la requête de ma 1ère réponse ?

select dbd_path from m_document
where dbd_path like '%.js'
and dbd_path not like 'Resource/%'
and dbd_path not like 'ModelTemplate/%'

Bonjour,

La requête suivante me donne ce résultat:

Bonjour

OK, le patch SQL était sans doute trop compliqué dans un contexte de “purge” de fichiers résiduels dans m_document

Je pense donc qu’il suffit de supprimer les records en question via des deletes SQL avec des where ad hoc sur les paths en question et ça devrait résoudre le problème dans votre cas:

delete from m_document where dbd_path like 'Disposition/dis_script_id/0/%/responsive.js';
etc.

Bonjour,

J’ai bel et bien supprimé toutes les occurrences via les deletes supra donc je ne trouve plus les scripts en bdd ce qui est bon signe

:Néanmoins le problème persiste même en essayant de passer de la 5.3.71 à la 6.0.12. Avec toujours la même remonté d’erreur

Bonjour,

David étant en congé, je reprends la suite de votre ticket.

Voici les requêtes bloquantes exactes du passage en 6.0 si vous avez encore des scripts Rhino. Elles n’ont jamais bloqué les migrations une fois purgée :

Il ne faut plus avoir d’usage de scripts ici :

select * from m_script_usage

ni de hook implémenté en Rhino sur Object internal | external | disposition | process | adapter :

select * from m_document d
where d.dbd_name like '%.js' 
and d.dbd_path not like 'Object%/ob%_script_id/%/MD%.js' 
and d.dbd_field_id in (select f.row_id from m_field f 
  where f.fld_name in ('obo_script_id','obe_script_id','dis_script_id','pcs_script_id','adp_script_id'))

Vous avez dû en oublier quelque part, ou alors c’est une nouvelle erreur dans vos logs.

Bonjour,

J’ai aucun hook implémenté avec cette requête:

Néanmoins avec l’autre requête j’ai beaucoup de résultat :

Si je prends comme exemple un des object internal qui ressors j’y retrouve un script js en ressource

Est ce que je dois le supprimer du coup et si oui, où est ce que je dois réécrire le code ?