Projet

Général

Profil

Development #73267

cmis: temporiser la création récursive des dossiers

Ajouté par Nicolas Roche il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
11 janvier 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

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

#1

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)

#2

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=

#3

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.

#5

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.

#6

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
#7

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.

Formats disponibles : Atom PDF