Session migration can truncate history if rewrite is interrupted
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 70/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- node.js, typescript
Piste de recherche
The issue is in packages/coding-agent/src/core/session-manager.ts around line 980. Look at the _rewriteFile() method and the openSync call with mode 'w'. Understand the session migration flow in SessionManager._setSessionFile(). Research Node.js atomic write patterns, like the linked write-file-atomic library. A fix involves writing to a temporary file first, then renaming it over the original on success. Test by creating a v1/v2 session file and simulating an interruption during migration.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What happened?
Opening a v1/v2 session migrates it and rewrites the same JSONL file. _rewriteFile() opens the original with "w", truncating it before writing entries back. If the process or write fails during migration, previously saved history can be left truncated. This is the path in SessionManager._setSessionFile() on current main.
Steps to reproduce
- Open an existing v1/v2 session with enough entries to make migration observable.
- Interrupt the process after
_rewriteFile()opens the original file and before it finishes writing. - Reopen the session: the original file contains only the prefix written before interruption.
This follows directly from openSync(this.sessionFile, "w") in session-manager.ts. I have not observed a production incident.
Expected behavior
Build the complete migrated file in a unique sibling temporary file, flush and close it, then rename it over the original. Keep the original on any error. Node's atomic-write implementation uses this pattern.
Version
main @ cb5fc1456d49d49c62e072bfed2926220083214e
AI-assisted report; source path checked against the stated commit.
- Langage dominant
- TypeScript
- Étoiles
- 1k
- Forks
- 68
- Merge moyen
- 23 h 51 min
- PR mergées (30 j)
- 65
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de stepfun-ai/Step-Code
-
area/build bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
stepfun-ai/Step-Code#190 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
area/tools bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
stepfun-ai/Step-Code#184 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
stepfun-ai/Step-Code#179 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
untriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
stepfun-ai/Step-Code#149 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
untriaged
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
stepfun-ai/Step-Code#144 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de stepfun-ai/Step-Code
Issues similaires
-
bug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
PhyberApex/kuroshiro#1687 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
microsoft/monaco-editor#5563 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 86/100
awslabs/visual-asset-management-system#937 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100