redhat-developer / redhat-developer/vscode-java
Reloading a window apprently clears Java project settings due to different workspace storage chosen
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 2.3k
- Forks
- 546
- Merge moyen
- 20 h 1 min
- PR mergées (30 j)
- 11
Description
Environment
- Operating System: macOS (local host) + Linux (SSH remote host)
- JDK version: 17.0.9
- Visual Studio Code version: 1.89.1
- Java extension version: 1.31.0
Steps To Reproduce
- Open a large Java project on a remote machine with SSH remote development
- Configure the Java project, e.g. add some source paths
- Reload the window
Current Result
Configuration added in the step 2 is apparently lost.
Expected Result
Configuration added in the step 2 is kept.
Additional Informations
I found that the -data directory passed to jdt.ls differs before/after the reload.
- Before:
-data /usr/local/google/home/nya/.vscode-server/data/User/workspaceStorage/4f53a3d603ab9ba87f981c0821b0dc62/redhat.java/jdt_ws - After:
-data /usr/local/google/home/nya/.vscode-server/data/User/workspaceStorage/4f53a3d603ab9ba87f981c0821b0dc62-1/redhat.java/jdt_ws
Notice the -1 suffix added to the workspace storage directory.
In fact, a VSCode extension may receive different context.storageUri for the identical workspace when multiple instances of VSCode opens the workspace concurrently (c.f. https://github.com/microsoft/vscode/issues/128234). This can happen even on a window reload because a storage directory lock is released only on the VSCode process exit (https://github.com/microsoft/vscode/blob/5f646b8e67a869ef33061085ffe0e377d5ba040c/src/vs/workbench/api/node/extHostStoragePaths.ts#L52).
I guess this problem happens only in remote development because VSCode skips obtaining locks for local extension hosts (https://github.com/microsoft/vscode/issues/128528).
Guide de contribution
Ouvrir 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.
Piste de recherche
Commencez par reproduire le flux de rechargement SSH distant et comparez context.storageUri de l’extension avec le chemin -data de jdt.ls avant et après le rechargement. Examinez le comportement référencé de VS Code extHostStoragePaths.ts ainsi que la gestion du lancement de jdt.ls par l’extension. Le travail est considéré comme terminé lorsque les paramètres du projet Java restent disponibles après le rechargement au lieu d’être déplacés vers un répertoire de stockage d’espace de travail -1.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java, typescript, vscode
- Domaine
- developer-experience, tooling
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100