Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 01/02/2018 15:37:08

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Migration v4

Bonjour,

Je cherche à faire la migration du cms vers la version 4 mais je n'y arrive pas  sad (enfin j'y arrive un peu, la v4 se lance,  mais impossible de remettre la main sur mes données)

J'ai trouvé ça : https://wiki.ametys.org/pages/viewpage. … d=32670595 , mais ça ne m'aide pas vraiment hmm

(Je passe sur les détails sur la MAJ de debian pour openjdk8)

Après pas mal de tests, les différentes étapes qui m'ont l'air correctes après avoir appliquer les points 1 et 2 du lien :

  • J'ai crée un nouveau dossier (pour simplifier pour la suite, on va dire "cmsv4") dans lequel j'ai mis les 3 dossiers (cms site et solr) de la v4.

  • J'ai redirigé le lien du dossier "générique" qui pointe sur la v3 vers le dossier de la v4 (ln -sf ..) pour que tomcat lance le nouveau code

  • J'ai donné "propriété" à l'utilisateur/groupe tomcat sur les 3 dossiers (chown -R tomcat:tomcat * ) pour que tomcat ai les droits d’exécution

  • J'ai mis le droit d’exécution sur solr/bin/solr (chmod +x solr) puis je l'ai exécuté (./solr) ce qui lance bien le serveur solr

Cela permet bien de lancer la nouvelle version du cms, j'obtiens malgré tout des warnings dans les logs de catalina

AVERTISSEMENT: Unknown version string [3.1]. Default version will be used.
[WARN] The 'AMETYS_CMS_HOME' environment variable was not found or was empty. Ametys home directory default value will be used '/WEB-INF/data'

A priori ces erreurs viennent du fichier cmsv4/cms/WEB-INF/web.xml
Pour préciser le lieu de mes données, ne sachant pas vraiment ce à quoi correspond 'environment variable' dans le contexte de l'erreur,  j'ai essayé de mettre AMETYS_SITE_HOME=Chemin_vers_data dans le fichier /etc/environment mais aucun changement pour le message d'erreur et si je crée un nouveau site cela me rajoute des infos dans le dossier cmsv4/cms/WEB-INF/data. N'arrivant pas à régler l'endroit ou il doit lire, j'ai donc essayé de mettre mes données la où il lit, mais cela ne fait rien  sad

J'essaye un peu de comparé les fichiers de configurations avec ceux de la version précédente mais on dirait qu'il n'y a plus grand chose en commun.
J'ai l'impression qu'il manque des connexions vers ldap et vers les bases de données mysql.
Dans sources de données, j'ai pu rajouter une connexion vers ldap, mais cela ne semble utilisable qu'après la création d'un site.
Toujours dans sources de données, j'ai pu également rajouter des connexions vers les bases de données mysql qui correspondent à : "Connexion à la base de données noyau / PLUGINS_CORE_DATASOURCE_CORE_CONFIG_JDBC_CATEGORY_DATASOURCE_GROUP_CORE"  et "Connexion à la base de données de monitoring / PLUGINS_WEB_CONFIG_CACHE_MONITORING_DATASOURCE_JDBC_GROUP" dans la v3 (nom dans l'interface/nom dans le fichier de conf) mais je n'ai pas compris comment m'en servir dans la v4, aucun paramètre n'a l'air d'avoir le même nom  hmm  . Du coup j'ai fais des essais pour les utiliser à la place de "Base de données interne" dans certains paramètres mais cela résulte systématiquement par une page violette avec un message d'erreur "Too bad sad "

Est ce que vous avez un tutoriel ou des explications pour utiliser les données de la version 3 dans la version 4 du cms ?

Bonne journée,
Mathieu

Offline

#2 08/02/2018 10:47:46

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour,

Bon à force de faire des tests j'ai fini par tout cassé  roll
Du coup je suis reparti proprement à 0 en supprimant tout et en remettant les dossiers du zip.
La nouvelle suite d'étapes :

  • j'ai repris les 4 étapes qui me semblent correctes (cf post précédent)

  • j'ai lancé une fois le serveur pour que cela crée le dossier cmsv4/cms/WEB-INF/data et j'ai mis les informations de configuration (étape 1/4 de l'aide "premier pas" du cms)  puis j'ai arrêté le serveur

  • j'ai supprimé le dossier cmsv4/cms/WEB-INF/data/data/repository

  • j'ai copié le dossier cmsv3_data/data/repository dans cmsv4/cms/WEB-INF/data/data/ (il faut juste faire gaffe à avoir le bon chown)

  • Je relance le serveur... Et la ça marche du premier coup, j'ai la liste de tous mes sites qui apparaît  big_smile

J'ai fais tellement de tests que je ne sais plus ce que j'avais fais au départ, mais à voir le double dossier data/data puis repository/repository, je me dis que j'ai sans doute bêtement copié avec une erreur d'étage dans l'arborescence  roll

Du coup maintenant que j'ai ma liste de sites, l'étape 2/4 des "premiers pas" est bonne.

Pour l'étape 3/4 des "premiers pas", il faut définir une population et l'associer au site.

  • Dans "Sources des données", j'ai configuré la connexion à l'annuaire Ldap.

  • Dans "Populations" j'ai défini une population à partir de l'annuaire ldap qui ne contient que moi (via un filtre sur l'uid)

  • Dans "Sites", j'ai pu définir la population qui me contient comme population des contributeurs et visiteurs

Pour l'étape 4/4 des "premiers pas", il faut définir un "gestionnaire" du site.
Dans "Sites" quand je clique sur "Affecter un gestionnaire", dans Utilisateur je ressors bien via la population qui ne contient que moi, je choisis de crée un Rôle administrateur avec tous les droits, et quand je valide j'obtiens l'erreur suivante :

no matching child node definition found for {http://www.ametys.org/jcr/repository/internal/1.0}acl
javax.jcr.nodetype.ConstraintViolationException: no matching child node definition found for {http://www.ametys.org/jcr/repository/internal/1.0}acl
    at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:744)
    at org.apache.jackrabbit.core.NodeImpl.getApplicableChildNodeDefinition(NodeImpl.java:818)
    at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1275)
    at org.apache.jackrabbit.core.session.AddNodeOperation.perform(AddNodeOperation.java:111)
    at org.apache.jackrabbit.core.session.AddNodeOperation.perform(AddNodeOperation.java:37)
    at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
    at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
    at org.apache.jackrabbit.core.NodeImpl.addNodeWithUuid(NodeImpl.java:1818)
    at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1778)
    at org.ametys.plugins.repository.jcr.ACLJCRAmetysObjectHelper._getOrCreateACLNode(ACLJCRAmetysObjectHelper.java:1477)
    at org.ametys.plugins.repository.jcr.ACLJCRAmetysObjectHelper._getOrCreateUsersNode(ACLJCRAmetysObjectHelper.java:1509)
    at org.ametys.plugins.repository.jcr.ACLJCRAmetysObjectHelper._getOrCreateUserNode(ACLJCRAmetysObjectHelper.java:1615)
    at org.ametys.plugins.repository.jcr.ACLJCRAmetysObjectHelper.removeDeniedUsers(ACLJCRAmetysObjectHelper.java:1205)
    at org.ametys.plugins.repository.collection.AmetysObjectCollection.removeDeniedUsers(AmetysObjectCollection.java:357)
    at org.ametys.plugins.repository.ModifiableACLAmetysObjectProfileAssignmentStorage.removeDeniedUsers(ModifiableACLAmetysObjectProfileAssignmentStorage.java:177)
    at org.ametys.core.right.ProfileAssignmentStorageExtensionPoint.lambda$removeDeniedProfileFromUser$48(ProfileAssignmentStorageExtensionPoint.java:988)
    at java.util.Optional.ifPresent(Optional.java:159)
    at org.ametys.core.right.ProfileAssignmentStorageExtensionPoint.removeDeniedProfileFromUser(ProfileAssignmentStorageExtensionPoint.java:988)
    at org.ametys.runtime.plugins.admin.superuser.SuperUserClientSideElement.affectUserToProfile(SuperUserClientSideElement.java:97)
    at org.ametys.web.administration.SuperUserClientSideElement.affectUserToProfile(SuperUserClientSideElement.java:53)
    at org.ametys.runtime.plugins.admin.superuser.SuperUserClientSideElement.affectUserToNewProfile(SuperUserClientSideElement.java:132)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.ametys.core.ui.ExecuteClientCallsAction._executeMethod(ExecuteClientCallsAction.java:141)
    at org.ametys.core.ui.ExecuteClientCallsAction.act(ExecuteClientCallsAction.java:120)
    at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:120)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333)
    at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215)
    at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:68)
    at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.ametys.core.ui.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:147)
    at org.ametys.core.ui.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:91)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
    at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483)
    at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
    at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:543)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

Une idée sur ce qui pose problème ?

Bonne journée,
Mathieu

Offline

#3 13/02/2018 18:29:13

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour,

J'ai (re..re)recommencé sans écraser le repository avec mon repository_v3 et cela fonctionne.
J'en ai donc conclu que j'avais un problème avec mon vieux repository_v3. J'ai cru avoir repérer le problème, j'ai donc essayé de faire un peu des modifs via http://adresse-cms.fr/cms/_repository via des ajouts de ametys-internal:acl / users / nom_population/mon_id mais a priori cela n'avait pas d'effet.

(Edit pour confirmer : ) En mettant le fichier cms/WEB-INF/data/data/repository/repository/nodetypes/custome_nodetypes.xml (obtenu lors de la création d'un site sans écrasé le repository) dans le repository de la v3 j'arrive a m'attribuer comme gestionnaire.

A priori je vais encore avoir plein de bugs à résoudre ... (reconstruction du live /indexation du site génèrent des erreurs aussi)

J'en reviens donc à ma question de départ :
Est ce que vous avez un tutoriel ou des explications pour utiliser les données de la version 3 dans la version 4 du cms ? Un script ou autre qui permettrait de convertir automatiquement le repository_v3 en un repository_v4

Bonne journée,
Mathieu

Last edited by Mathieu (14/02/2018 10:56:46)

Offline

#4 14/02/2018 11:10:06

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour,

pour faire suite au petit édit du post précédent , en repartant du point "Maintenant j'arrive a être gestionnaire d'un site".

Pour pouvoir "Ouvrir dans le CMS", j'obtenais une erreur, en fait il ne faut pas oublier de copier les skins des sites (copie des fichiers de cms_v3/cms/skins/* vers cms_v4/cms/skins/ ) pour pouvoir accéder à la partie suivante.

En arrivant dans la partie CMS d'un site j'ai bien la liste de toutes les pages du site, mais impossible d'en ouvrir une seule sans obtenir un "Oups...  Une erreur est survenue. Il est impossible d'afficher la page". A priori, certaines erreurs sont liées aux skins, j'ai donc fais des tests en utilisant le skin "demo" de la v4 au lieu des skins de la v3, cela permet d'ouvrir la page dans le cms, mais il y a systématiquement l'erreur suivante :
"Erreur d'affichage
Cette zone contient un élément (contenu ou service) dont le rendu graphique a échoué.
L'erreur ayant empêché le rendu est affichée ci-dessous.
Unable to get content property" suivi d'une trace d'erreurs java

org.apache.cocoon.ProcessingException: Unable to get content property at org.ametys.web.repository.PageGenerator._saxContentZoneItem(PageGenerator.java:614) at org.ametys.web.repository.PageGenerator._saxZoneItem(PageGenerator.java:496) at org.ametys.web.repository.PageGenerator._saxZoneItems(PageGenerator.java:396) at org.ametys.web.repository.PageGenerator._saxZone(PageGenerator.java:323) at org.ametys.web.repository.PageGenerator.generate(PageGenerator.java:244) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581) at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:782) at org.apache.cocoon.components.source.impl.SitemapSource.toSAX(SitemapSource.java:414) at org.apache.cocoon.components.source.SourceUtil.toSAX(SourceUtil.java:101) at org.apache.cocoon.components.source.SourceUtil.parse(SourceUtil.java:321) at org.apache.cocoon.sitemap.ContentAggregator.generate(ContentAggregator.java:125) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581) at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483) at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at org.apache.cocoon.Cocoon.process(Cocoon.java:699) at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:543) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: org.ametys.plugins.repository.AmetysRepositoryException: Unable to get contentType property at org.ametys.cms.repository.DefaultContent.getTypes(DefaultContent.java:142) at org.ametys.cms.contenttype.ContentTypesHelper.getContentTypeIdForRendering(ContentTypesHelper.java:1520) at org.ametys.web.repository.PageGenerator._saxContentZoneItem(PageGenerator.java:560) ... 53 more Caused by: javax.jcr.ValueFormatException: property /ametys:root/ametys-internal:sites/14/ea/organisation/ametys-internal:contents/78/43/intranet-article/ametys-internal:contentType is a single-valued property, so it's value can not be retrieved as an array at org.apache.jackrabbit.core.PropertyImpl.internalGetValues(PropertyImpl.java:467) at org.apache.jackrabbit.core.PropertyImpl.getValues(PropertyImpl.java:500) at org.ametys.cms.repository.DefaultContent.getTypes(DefaultContent.java:125) ... 55 more 

Offline

#5 14/02/2018 13:33:20

Cédric Damioli
Ametys Product Manager
From: Toulouse
Registered: 10/08/2010
Posts: 293

Re: Migration v4

Bonjour,

J'arrive un peu après la bataille, mais effectivement, malheureusement, nous n'avons pas de tuto ou de doc formalisée sur le sujet de la migration v3 -> v4
Nous avons des docs internes, mais à ce jour, rien qui ne puisse être utilisés sans support ou assistance.

En gros, dans le cadre de cette migration :
- les skins restent compatibles
- les données le sont globalement, mais pas tout à fait, et c'est tout le problème : les workflows ne sont plus stockés au même endroit, certaines propriétés ont changé de type
- les plugins ont presque tous leur équivalent en v4, mais pas tout à fait non plus : par exemple, les plugins gadgets ou UGC n'existent plus en v4. MyPage non plus, qui a avantageusement été remplacé par User-directory.

Ce sont tous ces "pas tout à fait" qui font qu'on ne peut pas avoir de doc exhaustive sur le sujet et que c'est un peu du cas par cas.

Cédric

Offline

#6 14/02/2018 17:58:53

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour Cédric,

A la limite si c'est possible, je veux bien avoir accès aux docs internes. Même si ce n'est pas simple à comprendre cela sera toujours mieux que rien et cela me fera peut être des débuts de pistes à suivre.

Autant je m'imagine dire au webmaster que certains plugins ne fonctionnent plus suite à la MAJ et qu'il faudra faire sans pendant un temps (ou même définitivement pour certains), autant je ne m'imagine pas du tout dire qu'il va falloir re saisir toutes les données de tous les sites  hmm

Pour le problème de skin que j'avais, il y avait un appel au plugin piwik

xsl:import href="plugin:web-analytics://stylesheets/piwik.xsl" />

et

xsl:call-template name="piwik"/>

, une fois ces 2 lignes commentés le skin fonctionne de nouveau.

Et retour à l'erreur "Unable to get content property".
Dans la trace, je suppose que la partie importante est : Caused by: javax.jcr.ValueFormatException: property /ametys:root/ametys-internal:sites/75/b0/organisation/ametys-internal:contents/5b/a4/index-article/ametys-internal:contentType is a single-valued property, so it's value can not be retrieved as an array at org.apache.jackrabbit.core.PropertyImpl.internalGetValues(PropertyImpl.java:467)

En regardant via cms/_repository quand je regarde les propriétés d'index-article, j'obtiens : ametys-internal:contentType (String) org.ametys.web.default.Content.article.
Si je cherche à ajouter une propriété, il n'y a pas l'air d'y avoir de type "array" possible (String Date Long Double Boolean Binary Name path Reference) , et si je compare avec un site d'un repository v4, j'obtiens exactement la même chose pour cette propriété  neutral

Bonne journée,
Mathieu

Offline

#7 16/02/2018 11:35:46

Cédric Damioli
Ametys Product Manager
From: Toulouse
Registered: 10/08/2010
Posts: 293

Re: Migration v4

Alors la propriété contentType est devenue multiple, d'où l'erreur. Dans _repository, je pense qu'il y a une case à cocher pour ça dans la création d'une propriété.
Pour migrer de simple à multiple, il faut forcément écrire un script (ou du code java).

Mais vous allez très certainement en avoir plein d'autres comme celle-ci.

Et pour le coup, le forum ne me paraît pas le plus simple pour gérer ça, en tout cas à ce jour, nous avons fait toutes les migrations nous mêmes et nous n'avons rien mis encore en place pour qu'elles soient (facilement) faisables par quelqu'un d'autre sad
Si votre migration doit être faite dans les prochains jours/semaines, le mieux est peut-être de nous contacter et de nous faire intervenir en support/assistance dans le cadre de cette migration.
Sinon, vous pouvez attendre qu'on essaie de formaliser une doc de migration, ce qu'on fera si on a de la demande en ce sens, mais là tout de suite, nos efforts de doc se portent surtout sur le portage v4 des docs v3 et sur l'arrivée très prochaine de la 4.1 !

Cédric

Offline

#8 16/02/2018 15:53:54

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour Cédric,

Avec les explications de votre premier post, j'ai supposé que j'allais devoir faire un script pour faire les transformations suivantes :
-changements de type de contentType vers "array"
-déplacement oswf:root/xx/xx/workflows-XXX vers ametys-internal:sites/xx/xx/nomdusite/ametys-internal:contents/xx/xx/nomarticle/ametys-internal:workflows/worflows-0

Du coup j'ai commencé par essayer de le faire à la main pour un seul via _repository. Après avoir fait des modifications, au moment de sauver le noeud cela me disait que la propriété obligatoire contentType n'y était pas (alors qu'elle était bien dans la liste), et en la supprimant et remettant j'ai vu que il était possible de coché la case multiple et ensuite j'ai pu sauvegarder. Lorsque la propriété existe déjà, on ne peut changer que la valeur de la propriété, pas son type, et dans _repository il n'y a pas l'air d'y avoir d'indicateurs visuel pour dire que la propriété est "multiple" ou non)

Après avoir fait les modifications, cela ne fonctionne pas, j'obtiens toujours la même erreur "index-article/ametys-internal:contentType is a single-valued property, so it's value can not be retrieved as an array" alors que manifestement j'ai fais les changements pour que cela soit "multiple". Je suppose que cela vient du fait que je n'ai pas "reconstruit le live du site".

Le problème se poursuit donc lorsque j'essaye de reconstruire le live. J'obtiens l'erreur : "Caused by: org.apache.jackrabbit.core.version.InconsistentVersioningState: Couldn't get version history for node xxx.."
En regardant dans le repository a priori tous mes "jcr:versionHistory (Reference)" sont faux vu qu'il n'y a pratiquement plus rien dans jcr:root/jcr:system/jcr:versionStorage.
J'ai voulu voir quelle manip faisait une suppression via le _repository du jcr:root/jcr:system/jcr:versionStorage, mais en fait il est vide dès le départ (i.e. juste après avoir copié le repository de la v3 et lancé le serveur) ce qui me bloque pour poursuivre mes tests hmm

Je voulais faire la migration principalement pour la gestion des droits d'accès. Cela faisait un moment qu'on en parlait et vu que la j'avais pu libérer un peu de temps libre pour la faire c'était l'occasion. Je pensais avoir quelques bugs "secondaire" de skins ou de plugins à régler, mais la perte des données ça ne sera pas acceptable.

J'ai l'impression d'avoir passé 3 fois plus de temps que ce que j'avais prévu et tout ça pour ne globalement rien réussir à faire marcher...  La MAJ attendra donc quelques semaines de plus que j'ai de nouveau du temps à lui accorder (en espérant que d'ici la il y aura un script qui permettra de transformer le repository_v3 en repository_v4)

Bon weekend,
Mathieu

Last edited by Mathieu (16/02/2018 16:22:18)

Offline

#9 14/05/2018 08:14:21

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour,

je viens pour avoir des nouvelles sur l'avancée (ou non) d'une solution pour passer de la version 3 à la version 4 ?

Petite citation d'un post que je viens de lire roll :

Raphaël Franchet wrote:

Ametys is different (better smile) thanother products: you never have to change it in order to add your own features... all is based on plugins and extensions. Thanks to this, upgrading from a version to another version is quite simple.

Bonne journée,
Mathieu

Offline

#10 16/05/2018 17:11:43

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,091

Re: Migration v4

Je ne suis pas très bon en anglais, mais la phrase est sortie du contexte : il s'agit de migrer du code développé et pas des données.... big_smile


Raphael Franchet
Expert Ametys

Offline

#11 17/05/2018 08:27:45

Mathieu
Guest
Registered: 26/09/2017
Posts: 30

Re: Migration v4

Bonjour,

Désolé Raphaël, je ne l'avais pas compris comme ça, je pensais que le "upgrading" faisait référence à "Ametys" du début de phrase ("Faire une mise à jour d'Ametys d'une version à une autre est très simple), pas à "plugins and extensions" de la fin de phrase ("Faire une mise à jour des plugins et extensions d'une version (d'Ametys) à une autre version (d'Ametys) est très simple")

Enfin peu importe, je vais continuer à attendre une solution pour pouvoir garder les données en passant de la version 3 à la version 4 d'ametys pour ne avoir à repartir de 0 avec la version 4.

Bonne journée,
Mathieu

Offline

Board footer

Powered by FluxBB