Problème au niveau du versionning

cancel
Showing results for 
Search instead for 
Did you mean: 
flash31186_8291
Member II

Problème au niveau du versionning

Bonjour à tous,

Je poste ce message parce que j'ai un problème avec le versionning. En effet, dans un script je sauvegarde un node deux fois (une première fois d'office et une deuxième fois en fonction d'un test).
Avant de lancer le script, le node est en version 1.1. Après l'exécution, si tout ce passe bien, il passe en 1.3.
Cependant, je ne sais pour quelle raison, quand je vais voir la version dans l'historique des versions, il m'affiche bien l'ensemble des versions, mais dans la page de propriété, il m'affiche tjs la version 1.1  :cry:
De ce fait le node deviens complètement inutilisable …

Est-ce que qqun aurait déjà eu ce genre de problème ?
Si vous avez des questions pour essayer de comprendre mieux mon problème, n'hésitez pas ;-)

Merci d'avance,

Michaël
4 Replies
flash31186_8291
Member II

Re: Problème au niveau du versionning

Pas d'idée ?

Pour info, voilà ce que Alfresco me retourne comme erreur provenant des logs :

org.alfresco.error.AlfrescoRuntimeException: 03200009 Failed to execute transaction-level behaviour public abstract void org.alfresco.repo.node.NodeServicePolicies$OnUpdatePropertiesPolicy.onUpdateProperties(org.alfresco.service.cmr.repository.NodeRef,java.util.Map,java.util.Map) in transaction e83f0a38-4dd6-4cb5-abf7-b2f9533b28fb
        at org.alfresco.repo.policy.TransactionBehaviourQueue.execute(TransactionBehaviourQueue.java:201)
        at org.alfresco.repo.policy.TransactionBehaviourQueue.beforeCommit(TransactionBehaviourQueue.java:133)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:744)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:724)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.beforeCommit(AlfrescoTransactionSupport.java:680)
        at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:48)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:835)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:645)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
        at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:467)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:349)
        at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:422)
        at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:439)
        at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:303)
        at org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:306)
        at org.alfresco.web.scripts.AbstractRuntime.executeScript(AbstractRuntime.java:183)
        at org.alfresco.web.scripts.servlet.WebScriptServlet.service(WebScriptServlet.java:122)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.alfresco.service.cmr.version.VersionServiceException: 03200008 The current implementation of the version service does not support the creation of branches.
        at org.alfresco.repo.version.Version2ServiceImpl.createVersion(Version2ServiceImpl.java:243)
        at org.alfresco.repo.version.Version2ServiceImpl.createVersion(Version2ServiceImpl.java:130)
        at org.alfresco.repo.version.VersionableAspect.onUpdateProperties(VersionableAspect.java:391)
        at sun.reflect.GeneratedMethodAccessor742.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.alfresco.repo.policy.JavaBehaviour$JavaMethodInvocationHandler.invoke(JavaBehaviour.java:179)
        at $Proxy15.onUpdateProperties(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor336.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.alfresco.repo.policy.TransactionBehaviourQueue.execute(TransactionBehaviourQueue.java:189)

A vrai dire, c'est la 2ème cause qui m'interpelle le plus … mais il me semblait que ce problème avait été réglé avec la version 3.2  :roll:

J'espère que vous pourrez m'aider …

Michaël
rivarola
Active Member

Re: Problème au niveau du versionning

dans un script je sauvegarde un node deux fois (une première fois d'office et une deuxième fois en fonction d'un test).
Pour info en mode versioning automatique un document ne peut subir qu'une montée de version par transaction.
Pour lui faire subir deux montées de version, il faut probablement passer la propriété cm:autoVersion à false, et appeler soi même les méthodes du VersionService, mais il faut faire bien attention à passer la seconde fois le numéro de version généré par le premier passage dans la Map des propriétés du doc. Sinon il va recalculer le même numéro de version que lors du premier passage et ça plante avec le message d'erreur cité.
flash31186_8291
Member II

Re: Problème au niveau du versionning

Tout d'abord merci d'avoir répondu "enfin" à ma question  :wink:

Au niveau d'un webscript, alfresco créé une transaction par script ? Je trouve ca bizarre parce que cela m'est déjà arrivé d'enregistrer un node deux fois pendant l'exécution d'un webscript … et je n'ai jamais eu ce problème de versionning au paravent …
Surtout que ce problème est quasi arrivé du jour au lendemain, sans raison apparente …

Dans mon script j'utilise cette fonction pour sauvegarder un node :

node.save();
Serait-ce une mauvaise manière de faire ?

Michaël
rivarola
Active Member

Re: Problème au niveau du versionning

Oui, une transaction est automatiquement créée pour le WebScript et non, le node.save() n'est pas une mauvaise pratique. Mais ce n'est pas le fait d'appeler save() qui va faire la montée de version, car elle est déjà faite automatiquement quand on change le content du noeud par API JavaScript. De plus, en montée de version automatique, le fait de modifier le contenu d'un document ne crée effectivement une nouvelle version que la première fois au cours d'une transaction. Si le contenu est modifié une seconde fois dans la transaction, il n'y aura pas de nouvelle montée de version.
Ce n'est pas très clair comme ça, mais ceux qui parlent couramment Java peuvent regarder le code des classes VersionableAspect, ScriptNode et ScriptContentData.