Development #73267
cmis: temporiser la création récursive des dossiers
0%
Description
La création des répertoires à la main depuis le client fonctionne.
Mais la création récursive échoue une fois le premier répertoire créé.
Historique
Mis à jour par Emmanuel Cazenave il y a plus d'un an
Nicolas Roche a écrit :
Mais la création récursive échoue une fois le premier répertoire créé.
Sur quelle instance de serveur CMIS ? Quelle erreur ça fait ?
(j'avais testé ça à l'époque sur un alfresco et ça marchait bien avec création de répertoire, sous répertoire, sous sous répertoire etc)
Mis à jour par Nicolas Roche il y a plus d'un an
Sur quelle instance de serveur CMIS ?
https://passerelle-parsifal-preprod.test.entrouvert.org/cmis/gat/ (edit)
Quelle erreur ça fait ?
https://demarches-parsifal.test.entrouvert.org/backoffice/management/test-cmis/1/inspect (edit)
connection error: Unable to find the server at ld3gat003i.mairie.toulouse.intra
(j'avais testé ça à l'époque ... )
J'ai potentiellement 8 niveaux de répertoires à créer (ex: /Sites/dui/documentLibrary/2023/1/2/3/4/5/6/123456), mais bon, ici ça coince dès le second.
En console on obtient une exception ObjectNotFoundException :
$ ssh passerelle.node2.test.saas.entrouvert.org $ sudo -u passerelle passerelle-manage shell -d passerelle-parsifal.test.entrouvert.org > from passerelle.apps.cmis.models import CmisConnector, CMISGateway > con = CmisConnector.objects.get() > gateway = CMISGateway(con.cmis_endpoint, con.username, con.password, con.logger) # le dossier 2023/1/2 n'existait pas (2023/1 était vide à 11h) > [(x.properties['cmis:path'], x.properties['cmis:baseTypeId']) for x in gateway.get_object_by_path('/Sites/dui/documentLibrary/2023').getChildren()] [('/Sites/dui/documentLibrary/2023/1', 'cmis:folder')] > [(x.properties['cmis:path'], x.properties['cmis:baseTypeId']) for x in gateway.get_object_by_path('/Sites/dui/documentLibrary/2023/1').getChildren()] [] # La création des répertoires (à la main) depuis le client fonctionne (11h04) > folder = gateway.repo.getObjectByPath('/Sites/dui/documentLibrary/2023/1') > folder = folder.createFolder('/Sites/dui/documentLibrary/2023/1/2') # Mais la création (récursive) complète du dossier échoue en cours de route : seul 2023/1/2/3 a été créé (11h08) > folder = gateway._get_or_create_folder('/Sites/dui/documentLibrary/2023/1/2/3/4/5/6/123456') ObjectNotFoundException: Error 404 at https://pfs.integration.toulouse-metropole.fr/alfresco/api/-default-/public/cmis/versions/1.1/atom/path?path=/Sites/dui/documentLibrary/2023/1/2/3/4&filter=&includeAllowableActions=false&includeACL=false&includePolicyIds=false&includeRelationships=&renditionFilter= # retenté à 11h14 : seul 2023/1/2/3/4 a été créé > folder = gateway._get_or_create_folder('/Sites/dui/documentLibrary/2023/1/2/3/4/5/6/123456') ObjectNotFoundException: Error 404 at https://pfs.integration.toulouse-metropole.fr/alfresco/api/-default-/public/cmis/versions/1.1/atom/path?path=/Sites/dui/documentLibrary/2023/1/2/3/4/5&filter=&includeAllowableActions=false&includeACL=false&includePolicyIds=false&includeRelationships=&renditionFilter=
Mis à jour par Emmanuel Cazenave il y a plus d'un an
Ok.
T'as moyen de savoir (via des tests depuis ton passerelle devinst où tu bidouillerais le connecteur) combien temps il faudrait temporiser pour que ça passe ? Histoire de vérifier que c'est un temps raisonnable pour rester en mode synchrone.
J'imagine qu'on pourrait patcher _get_or_create_folder
pour vérifier qu'un répertoire est bien créé après qu'on en ait demandé sa création, attendre un chouïa en cas d'erreur et redemander après ce laps de temps.
Mis à jour par Nicolas Roche il y a plus d'un an
T'as moyen de savoir (via des tests depuis ton passerelle devinst où tu bidouillerais le connecteur)
Non, mais du coup j'ai un argument pour négocier cet accès.
J'imagine qu'on pourrait ...
C'est aussi ce que j'ai en tête.
Mis à jour par Nicolas Roche il y a plus d'un an
- Sujet changé de cmis: temporiser la création récursive des dossier à cmis: temporiser la création récursive des dossiers
Mis à jour par Benjamin Dauvergne il y a plus d'un an
Nicolas Roche a écrit :
http://ld3gat003i.mairie.toulouse.intra:8080/alfresco/api/-default-/public/cmis/versions/1.1/ato
Ça n'a pas de rapport avec un souci de temporisation ça, c'est encore un problème dans leur proxy qui ne remplace pas l'URL interne dans les réponses.
PS: POST qui marche
cmislib POST request to https://pfs.integration.toulouse-metropole.fr/alfresco/api/-default-/public/cmis/versions/1.1/atom/children?id=c07500fa-a41a-4ee1-a06e-9699cf9b1329
POST qui ne marche pas (forcément avec cette URL) :
cmislib POST request to http://ld3gat003i.mairie.toulouse.intra:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/children?id=1dbaaabd-677b-434a-aa21-24765d09dbe7
à mon avis ils foiré leur regexp ou la configuration d'apache, ou alors ils ne l'appliquent qu'à une URL trop restreinte.