Met à jour l'index/compteur de tickets, les tickets #111/#113/#114 et le contexte de Main suite au traitement du ticket #114. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5.2 KiB
5.2 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #111 | 3 |
|
1785390694060 |
Enquete /tmp IdeA — inventaire et fenetres de cleanup
Methode
- Scan du code sur les usages
std::env::temp_dir()/ prexifesidea-*horsfrontend. - Lecture des blocs source pour separer
runtimevs#[cfg(test)]. - Verification du contenu live de
/tmpau moment de l'analyse : aucun dossieridea-*visible a la racine de/tmppendant ce tour.
Conclusion courte
- Les noms cites dans le ticket (
idea-structured-session-factory-*,idea-web-root-*,idea-server-test-*,idea-openai-compat-*, etc.) ne correspondent pas, dans l'etat actuel du code, a des artefacts runtime produit. Ils proviennent majoritairement de tests embarques dans les crates Rust. - Le seul artefact runtime clair lie a IdeA/MCP trouve pendant l'analyse est le repertoire parent
idea-mcpqui heberge les sockets Unix par projet quand le runtime tombe sur/tmpcomme base. - Donc le modele
un call MCP -> un dossier temp -> suppression en fin de calln'est pas le bon modele pour la majorite des cas observes.
Runtime reel identifie
1. idea-mcp (runtime MCP par projet)
- Source :
crates/backend/src/mcp_endpoint.rset miroircrates/app-tauri/src/mcp_endpoint.rs. - Role : repertoire parent des sockets Unix du serveur MCP local, ex.
<runtime-dir>/idea-mcp/<project-id>.sock. - Creation : a la determination du endpoint MCP du projet si le sous-dossier
idea-mcpn'existe pas deja. - Granularite : par projet / par listener MCP, pas par appel d'outil MCP.
- Cleanup deja present :
- le fichier socket est unlink sur fermeture propre via
reclaim_name(true); - un socket cadavre est supprime avant rebind si c'est bien un socket stale ;
- refs utiles :
crates/backend/src/lib.rsautour debind_endpoint()etcrates/backend/src/mcp_endpoint.rs.
- le fichier socket est unlink sur fermeture propre via
- Cleanup opportun :
- pas a la fin de chaque call MCP ;
- oui a la fermeture du listener / fermeture du projet pour le fichier
.sock; - oui au prochain demarrage / prochain bind pour nettoyer un socket stale d'un crash precedent ;
- amelioration possible : supprimer aussi le dossier parent
idea-mcps'il devient vide apres drop du dernier socket, ou faire un sweep best-effort au demarrage des endpoints MCP.
- Importance : c'est le seul candidat clairement runtime et potentiellement visible sous
/tmpsiXDG_RUNTIME_DIR/TMPDIRne sont pas utilisables et que le fallback tombe sur/tmp.
Faux positifs / test-only observes
Ces prefixes existent dans le code mais dans des blocs de tests ou helpers de test. Ils ne semblent pas correspondre a des dossiers runtime utilisateur :
idea-openai-compat-*:crates/infrastructure/src/session/openai_compat.rsidea-structured-session-*:crates/infrastructure/src/session/mod.rsidea-web-root-*,idea-server-test-*,idea-server-lock-*,idea-app-data-env-*,idea-shared-core-*,idea-empty-web-*:crates/web-server/src/lib.rsidea-embedded-server-*:crates/app-tauri/src/embedded_server.rsidea-openai-mcp-tools-list-*,idea-openai-mcp-permissions-*, variantesapp-tauri-*: tests danscrates/backend/src/openai_tools.rsetcrates/app-tauri/src/openai_tools.rsidea-pty-sandbox-*,idea-landlock-*,idea-opencode-*,idea-devices-store-*,idea-secrets-store-*, etc. : helpers de tests avecDrop/remove_dir_all.
Lecture sur leur cleanup
- Dans la majorite des cas de tests lus, le cleanup nominal existe deja (
Drop,remove_dir_all,remove_file). - Le vrai risque residuel de ces dossiers est surtout : crash/abort de test, kill brutal, ou interruption d'une suite de tests. Dans ce cas, le residue reste dans
/tmp. - Comme
/tmpest borne a 16 Go, ces residues peuvent devenir un probleme d'hygiene, mais ce n'est pas un sujet de lifecycle MCP par call ; c'est plutot un sujet de hygiene de tests / sweep de reliquats.
Fenetres de cleanup recommandes
Runtime produit
idea-mcp/<project>.sock: cleanup a la fermeture du listener MCP (deja en place) ; stale cleanup avant bind (deja en place).idea-mcp/parent dir : cleanup best-effort si vide apres fermeture du dernier listener, ou sweep au demarrage de l'app / ouverture projet.
Artefacts de tests
- Cleanup nominal dans chaque test/helper (souvent deja fait).
- Ajouter si besoin un sweep best-effort des prefixes
idea-*generes par les tests au debut/fin des jobs de test locaux/CI. - Ne pas melanger cela avec la logique runtime MCP : c'est un chantier distinct.
Recommandation de perimetre pour le ticket #111
- Cadrer
#111sur les artefacts runtime visibles par l'utilisateur. - Traiter en priorite
idea-mcp:- verifier si le dossier parent vide reste parfois en place ;
- si oui, le supprimer quand il devient vide ou au prochain demarrage.
- Ouvrir si necessaire un second ticket dedie a l'hygiene des reliquats de tests sous
/tmp.
Reponse a la question produit initiale
- Oui, IdeA peut produire un artefact sous
/tmppour le MCP runtime (idea-mcp), mais ce n'est pas cree par appel MCP individuel. - Non, les dossiers cites dans la description ne semblent pas, a ce stade, etre crees par les appels MCP IdeA de production ; ils sont majoritairement issus de tests.