La limite de 24 Mo n'etait pas arbitraire : le fichier partait dans un seul corps JSON en base64, tenu entier en memoire par le navigateur puis par le serveur. Relever la constante seule aurait demande ~1,4 Go de RAM de chaque cote pour un fichier de 1 Go. Le transfert est donc decoupe en tranches de 8 Mo. Le navigateur lit une tranche a la fois (Blob.slice), le serveur la decode, l'ecrit dans un .part et l'oublie ; seul le descripteur reste ouvert. Mesure sur 120 Mo : la RAM du process n'a pas bouge (95 -> 96 Mo). uploadMaxBytes (1 Go) borne desormais le DISQUE ; c'est uploadChunkMax (8 Mo) qui borne la memoire, et lui seul. Une session interrompue est balayee au bout de 10 min, et les .part orphelins sont effaces au demarrage du service : les sessions vivent en memoire, aucun n'est reprenable apres un arret. Un identifiant inconnu est refuse en 409 plutot que de reprendre un fichier en son milieu. La vignette affiche l'avancement en pourcentage au-dela d'une tranche.
1.5 KiB
La limite d'envoi de fichiers passe de 24 Mo à 1 Go.
Des fichiers d'un gigaoctet
La 0.8.7 plafonnait à 24 Mo, et ce n'était pas un caprice : le fichier partait dans un seul message, encodé en base64, gardé entier en mémoire par le navigateur puis par le serveur. Un gigaoctet ainsi transmis, c'est près d'un gigaoctet et demi de mémoire de chaque côté — de quoi faire tomber la machine.
Le fichier part maintenant par tranches de 8 Mo. Le navigateur n'en lit qu'une à la fois, le serveur l'écrit sur le disque et l'oublie aussitôt : plus personne ne détient le fichier entier. Mesuré sur un envoi de 120 Mo, la mémoire du serveur n'a pas bougé d'un mégaoctet.
Au passage, la vignette affiche l'avancement en pourcentage : sur un gros fichier, l'anneau qui tournait sans rien dire n'était pas d'un grand secours.
Un envoi interrompu — onglet fermé, réseau coupé, service redémarré — ne laisse rien derrière lui : le fichier partiel est effacé au bout de dix minutes, et au démarrage du service.
Ce qui n'a pas changé : le dépôt n'a toujours lieu qu'à l'envoi du message, et l'accès distant fonctionne pareil, les tranches passant par le tunnel chiffré comme le reste.
Pensez tout de même à la place disque de la machine qui héberge AJEAN : les fichiers envoyés s'accumulent dans uploads/, à l'intérieur du dossier de travail de l'IA.
Mise à jour
ajean update
Puis redémarrez l'interface :
ajean ui restart