fix(mémoire) : la synchro ne tient plus la liste complète en mémoire #10

Merged
foXaCe merged 1 commit from fix/memoire-rsync into main 2026-10-17 14:04:48 +02:00
Owner

plan.rs passait --no-inc-recursive à chaque transfert, exactement comme le script bash qu'il remplace. Ce drapeau oblige rsync à construire toute la liste des fichiers avant de commencer.

Mesure sur le PC, 2026-10-17

Transfert Pic mémoire (VmHWM)
script horaire (avec --no-inc-recursive) 5,9 Go
même transfert, sans le drapeau 70 Mo

Essai à blanc sur /mnt/Media → LXC 108 : un facteur 84. La passe horaire ne met plus le poste à genoux.

Le drapeau devient un choix explicite

[rsync] progression_globale Comportement
false (défaut) rsync descend à la volée ; débit et volume exacts, mémoire basse
true rsync tient la liste ; pourcentage global, mémoire en rapport

Quand le pourcentage n'est pas global, la page ne ment plus : _sync-progress.json porte octets et global, et CarteTransfert affiche le volume transféré avec une barre indéterminée au lieu d'une jauge qui repartirait de zéro à chaque lot.

Un test qui dépendait de son environnement

developpe_le_tilde_et_les_variables lisait XDG_RUNTIME_DIR — présent dans une session interactive, absent d'un service systemd. C'est ce qui faisait échouer Crate pcmirror en intégration continue. developper_avec prend maintenant la source des variables en paramètre.

Vérifié

  • 192 tests Rust verts, y compris sans XDG_RUNTIME_DIR ni HOME (simulation du service)
  • cargo clippy -D warnings muet, cargo fmt propre
  • svelte-check 0 erreur / 0 warning, 69 tests unitaires du front
`plan.rs` passait `--no-inc-recursive` à chaque transfert, exactement comme le script bash qu'il remplace. Ce drapeau oblige rsync à construire **toute** la liste des fichiers avant de commencer. ## Mesure sur le PC, 2026-10-17 | Transfert | Pic mémoire (`VmHWM`) | |---|---| | script horaire (avec `--no-inc-recursive`) | **5,9 Go** | | même transfert, sans le drapeau | **70 Mo** | Essai à blanc sur `/mnt/Media` → LXC 108 : un facteur **84**. La passe horaire ne met plus le poste à genoux. ## Le drapeau devient un choix explicite | `[rsync] progression_globale` | Comportement | |---|---| | `false` (défaut) | rsync descend à la volée ; débit et volume exacts, mémoire basse | | `true` | rsync tient la liste ; pourcentage global, mémoire en rapport | Quand le pourcentage n'est pas global, la page ne ment plus : `_sync-progress.json` porte `octets` et `global`, et `CarteTransfert` affiche le **volume transféré** avec une barre indéterminée au lieu d'une jauge qui repartirait de zéro à chaque lot. ## Un test qui dépendait de son environnement `developpe_le_tilde_et_les_variables` lisait `XDG_RUNTIME_DIR` — présent dans une session interactive, absent d'un service systemd. **C'est ce qui faisait échouer `Crate pcmirror` en intégration continue.** `developper_avec` prend maintenant la source des variables en paramètre. ## Vérifié - **192 tests Rust** verts, y compris sans `XDG_RUNTIME_DIR` ni `HOME` (simulation du service) - `cargo clippy -D warnings` muet, `cargo fmt` propre - `svelte-check` 0 erreur / 0 warning, 69 tests unitaires du front
fix(mémoire) : la synchro ne tient plus la liste complète en mémoire
All checks were successful
Contrôles des références / Références du comportement (pull_request) Successful in 3s
Contrôles des références / Crate pcmirror (formatage, Clippy, tests) (pull_request) Successful in 1m20s
Contrôles des références / Livraison (style des scripts, essai à blanc) (pull_request) Successful in 1s
Contrôles des références / Front d'état (types, lint, format, tests, build, bout en bout) (pull_request) Successful in 21s
8ffbba0b09
`plan.rs` passait `--no-inc-recursive` à chaque transfert, exactement comme
le script bash qu'il remplace. Ce drapeau oblige rsync à construire **toute**
la liste des fichiers avant de commencer : sur un miroir de 1,7 To, cela
pèse près de six gigaoctets.

**Mesuré sur le PC, 2026-10-17** : la passe horaire du script atteignait
`Mem peak: 5,9 Go`. Le même transfert sans le drapeau plafonne à **70 Mo**
(pic `VmHWM`, essai à blanc sur `/mnt/Media` → LXC 108) — un facteur 84.

Le drapeau ne servait qu'à une chose : rendre le **pourcentage global** juste.
Il devient un choix explicite de la configuration :

- `[rsync] progression_globale = false` (défaut) — rsync descend les dossiers
  à la volée, le débit et le volume transférés restent exacts ;
- `progression_globale = true` — rsync tient la liste, le pourcentage couvre
  tout le transfert, la mémoire suit.

Quand le pourcentage n'est pas global, la page ne l'affiche plus comme une
jauge : `_sync-progress.json` porte désormais `octets` et `global`, et
`CarteTransfert` montre le **volume transféré** avec une barre indéterminée.
Une barre qui repartirait de zéro à chaque lot mentirait sur l'avancement.

Au passage, un test dépendait de l'environnement : `developpe_le_tilde_et_les
_variables` lisait `XDG_RUNTIME_DIR`, présent dans une session interactive
mais absent d'un service systemd — c'est ce qui faisait échouer la chaîne
`Crate pcmirror` en intégration continue. `developper_avec` prend désormais
la source des variables en paramètre, et le banc fixe ce qu'il teste.

Vérifié : 192 tests Rust verts (dont sans `XDG_RUNTIME_DIR` ni `HOME`),
clippy muet, svelte-check 0 erreur / 0 warning, 69 tests unitaires du front,
mesure mémoire refaite à la main.
foXaCe merged commit f7c8915b18 into main 2026-10-17 14:04:48 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/pc-mirror!10
No description provided.