Migration serveur 4.1 -> 4.2 -> 5

Bonjour,
Nous avons actuellement une version de scenari serveur utilisée en production en 4.1
Je vais faire la MAJ en V5 mais si j’ai bien compris, je ne peux pas passer directement de la 4.1 à la 5, je dois faire un passage par la 4.2 avant.
J’ai donc installé et déployé en suivant la procédure une version 4.2 sur un serveur de test et suite à cela j’ai importé le répertoire blobs et db de ma 4.1 vers le dossier d’installation 4.2, sans oublié de supprimer le _checksum.txt du répertoire DB.
Seulement lorsque je démarre tomcat9 j’ai ces erreurs dans le log scenari:

1— Info : Thu Feb 18 17:22:38 CET 2021[668] (main) —

Starting SCENARIserver 4.2.202 final (202012182133) on OpenJDK 64-Bit Server VM 11.0.9.1 11.0.9.1+1-post-Debian-1deb10u2 / Linux amd64
1— Error : Thu Feb 18 17:22:38 CET 2021[963] (main) —
Init Scenari webapp in eu.scenari.core.execframe.httpservlet.servlets.InitAppContextListener failed
2— Error : Thu Feb 18 17:22:38 CET 2021[963] (main) —
Init application ‹ /var/lib/tomcat9/webapps/scenari/WEB-INF/conf/universeInit.xml › failed.
3— Error : Thu Feb 18 17:22:38 CET 2021[963] (main) —
Error on parsing xml end element ‹ universe ›
4— Error : Thu Feb 18 17:22:38 CET 2021[962] (main) —
Check sum on db files failed for db : /var/lib/tomcat9/webapps/scenari/data/db
5— Error : Thu Feb 18 17:22:38 CET 2021[961] (main) —
New file(s) found in current db : [index.0.oda, histo.0.ocl, default.och, default.odh, default.0.ocl, internal.och, histo.och, database.ocf, default.0.oda, index.0.ocl, internal.0.ocl, versions.0.ocl, _timestampSystem, index.och, roots.0.ocl, subrec.och, users.och, index.odh, roots.och, users.0.ocl, _timestamp, subrec.0.ocl, versions.och]

6— Exception : Thu Feb 18 17:22:38 CET 2021[962] (main) —
eu.scenari.commons.util.lang.ScException
at eu.scenari.orient.engine.DbDriver.acquireDatabase(DbDriver.java:404)
at eu.scenari.orient.engine.DbDriver.openThreadLocalDatabase(DbDriver.java:449)
at eu.scenari.userodb.UserOdbMgr.initUserMgr(UserOdbMgr.java:263)
at eu.scenari.userodb.UserOdbMgrLoader$1.onUniverseEvent(UserOdbMgrLoader.java:121)
at eu.scenari.core.universe.Universe.dispatchEvent(Universe.java:328)
at eu.scenari.core.universe.Universe.xInitEnd(Universe.java:454)
at eu.scenari.core.universe.UniverseLoader.xEndElement(UniverseLoader.java:207)
at eu.scenari.commons.util.xml.FragmentSaxHandlerBase.endElement(FragmentSaxHandlerBase.java:242)
at com.bluecast.xml.Piccolo.reportEndTag(Piccolo.java:824)
at com.bluecast.xml.PiccoloLexer.parseCloseTagNS(PiccoloLexer.java:1598)
at com.bluecast.xml.PiccoloLexer.parseTagNS(PiccoloLexer.java:918)
at com.bluecast.xml.PiccoloLexer.parseXMLNS(PiccoloLexer.java:867)
at com.bluecast.xml.PiccoloLexer.parseXML(PiccoloLexer.java:838)
at com.bluecast.xml.PiccoloLexer.yylex(PiccoloLexer.java:4040)
at com.bluecast.xml.Piccolo.yylex(Piccolo.java:951)
at com.bluecast.xml.Piccolo.yyparse(Piccolo.java:1039)
at com.bluecast.xml.Piccolo.parse(Piccolo.java:501)
at eu.scenari.xml.parser.PoolXmlReader$XXmlReader.parse(PoolXmlReader.java:109)
at eu.scenari.core.execframe.httpservlet.servlets.InitAppContextListener.contextInitialized(InitAppContextListener.java:147)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4685)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5146)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1133)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1867)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1045)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:429)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)

1— Info : Thu Feb 18 17:24:15 CET 2021[664] (main) —

Starting SCENARIserver 4.2.202 final (202012182133) on OpenJDK 64-Bit Server VM 11.0.9.1 11.0.9.1+1-post-Debian-1deb10u2 / Linux amd64
1— Warning : Thu Feb 18 17:24:16 CET 2021[250] (main) —
No CheckSumDb could be achieved

J’ai supprimé le checkum_db.txt de /db et blobs et blobs_1 mais c’est pareil
Si je fais web/u/adminOdb?cdaction=CheckAuto ,le checkauto se fait bien
Je ne sais plus quoi tenter pour faire marcher cette version. Pourriez vous m’aider?
Amicalement

Bonjour,

Le passage par 4.2 n’est pas nécessaire pour basculer d’un environnement server 4.1 vers5.0.

Vous trouverez la documentation nécessaire ici : https://doc.scenari.software/SCENARIchain-server@5.0/linux/fr/#$0:update:3.3

Concernant votre problème : un fichier checksum.txt (dans le répertoire blobs et/ou db) doit être incohérent. Vous pouvez le supprimer ET vous assurer que l’intégrité de la base de donnée via la sonde checkAuto (cf https://doc.scenari.software/SCENARIchain-server@5.0/linux/fr/#$0:monitoring:qN4DafmAb7gIxVGqND2ybe).
Scenari5 est d’avantage résilient à ce type de problème et sait détecter les faux positifs sur ce type de contrôle.

Cdt,
Antoine
Kelis

Bonjour et merci pour votre réponse.
Je commence l’installation de la 5.0, du coup j’applique la procédure « Passage de SCENARIchain-server 4.2 à 5.0 » c’est la même que de 4.1 à 5.0 sauf que les répertoires à copier/coller sont dans /var/lib/tomcat9/scenari-4-1/scenari/javaserver/ (blobs et db) c’est bien ça?

Bonjour,
Je n’ai pas la doc sous les yeux, mais oui, la différence se situe au niveau des répertoires.
Cdt
Antoine
Kelis

Super, merci pour votre aide. L’installation et la reprise des ateliers c’est bien passée.
Seule chose , malgré l’activation de la conf ldap, l’authentication avec des comptes ldap ne fonctionne pas. Je ne vois rien dans les logs pourtant. Seul le superadmin peut se connecter.

J’ai trouvé, un caractère de trop dans ma conf ldap…ça marche
Par contre J’ai le message rouge « Votre connexion au serveur est interrompue ou instable » en permanence" alors que l’application répond correctement.
Sauriez vous pourquoi?

Vous avez sûrement un organe réseau qui marche mal avec les web-sockets.

Le même message que dans :

Vérifier la connexion.

Bonjour, j’ai testé ma connexion via https://www.websocket.org/echo.html et c’est OK, j’obtiens bien « This browser supports WebSocket. ».
Pourtant j’ai toujours le message « Votre connexion au serveur est interrompue ou instable » en permanence lorsque je suis connectée au serveur scenari V5. J’ai une erreur 500 « ne peut établir de connexion avec le serveur à l’adresse wss://scenarixxxxxxxx » dans la console.
Auriez vous une autre piste pour résoudre ce problème?

De même je n’ai pas trouvé dans la doc les ports à ouvrir sur le serveur pour utiliser le scenari-client, est ce que les ports 80 et 443 suffisent?

Et si vous cliquez sur le bouton « Connect » ? le fait que votre navigateur supporte les WebSocket n’indique pas que votre réseau lui le supporte. Votre erreur 500 sur wss://scenarixxxxxxxx semble indiquer que non.

Si je clique sur « Connect » et « Send message » et « disconnect » celà fonctionne bien. Ce doit être le pare feu sur mon serveur scenari lui même qui rejete le websocket. Je demande à mes collègues du réseau de regarder.

A priori ce serait plutot ma conf du vhost sur apache qui n’est pas bonne pour le ws
Je ne trouve rien sur la documentation d’installation, j’ai mis ces lignes:
ProxyPass /ws ws://127.0.0.1:8009/
ProxyPassReverse /ws ws://127.0.0.1/

En + de ma conf :
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1/

Sauriez vous quel est mon erreur?

enfin plutôt j’ai mis:
ProxyPass /wss wss://127.0.0.1:8009/
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1/

Bonjour,

Après quelque tests j’ai pu mettre en place un serveur Apache en proxy devant le moteur de servlet.

J’ai effectué mes tests avec une machine virtuelle Debian 10 avec une installation de SCENARIsuite-starter 5.0 par DEB.

Voici la configuration du vhost pour SCENARIsuite-starter :
ProxyPass /scenarisuite-starter5.0/~~chain/ws ws://127.0.0.1:8080/scenarisuite-starter5.0/~~chain/ws
ProxyPassReverse /scenarisuite-starter5.0/~~chain/ws ws://127.0.0.1:8080/scenarisuite-starter5.0/~~chain/ws
ProxyPass /scenarisuite-starter5.0/~~depot/ws ws://127.0.0.1:8080/scenarisuite-starter5.0/~~depot/ws
ProxyPassReverse /scenarisuite-starter5.0/~~depot/ws ws://127.0.0.1:8080/scenarisuite-starter5.0/~~depot/ws
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/

Voici la configuration du vhost pour SCENARIchain-server :
ProxyPass /scenarichain-server5.0/ws ws://127.0.0.1:8080/scenarichain-server5.0/ws
ProxyPassReverse /scenarichain-server5.0/ws ws://127.0.0.1:8080/scenarichain-server5.0/ws
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/

Bonjour,

Visiblement vous utilisez Tomcat comme serveur d’application.
Celui-ci est déconseillé car les serveurs SCENARI utilisent le protocole WebSocket qui est essentiel pour synchroniser les modifications simultanées effectuées par les utilisateurs.
L’implémentation actuelle de WebSocket dans Tomcat 9 présente des problèmes connus qui induiront des instabilités dans le processus de mise à jour de l’interface utilisateur web.
Ces problèmes vont s’amplifier en corrélation avec le nombre d’utilisateurs connectés simultanés.
Nous vous recommandons vivement d’utiliser Jetty 9 au lieu de Tomcat 9 .

Bonjour et merci pour vos réponses et conseils.
J’ai installée finalement la V5 sur jetty/nginx et ça marche bien, je n’ai plus de messages d’erreurs.
Bon week end