REditorSupport / REditorSupport/vscode-R
Session watcher should not rely on pid
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1.2k
- Forks
- 139
- Avg merge
- 2h 46m
- Merged PRs (30d)
- 5
Description
Is your feature request related to a problem? Please describe.
I use an HPC compute cluster(linux), and have the vscode-server running on the "head" node, while the R process runs on a "compute" node. These are actually different computers, but access the same filesystem. They have different process tables, ie, the pid of a process on the compute node can't be monitored from the head node. I feel this cluster setup is pretty common in the research community, so this issue doesn't just affect me.
Describe the solution you'd like
As the nodes on the cluster use the same filesystem, the current temp file solution should work, but there needs to be some other mechanism other than pid to monitor the status of the process, ie don't cleanup the session if the pid isn't visible to process.kill(pid, 0).
Describe alternatives you've considered
Unfortunately I can't just ssh directly into a compute node and run vscode-server there, I've definitely tried.
Additional context
I launch the R session in a compute node using a custom script that I load using the r.rterm.linux setting. It almost works, except for the above pid problem. Essentially, .vsc.attach() works perfectly, but then the vscode-R process can't see the pid, so it immediately cleans the session.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/session.ts at the linked cleanup check around line 796, and review how the custom r.rterm.linux script and .vsc.attach() affect session monitoring. Reproduce the shared-filesystem case with the R process on a separate compute node; done means the attached session remains active when its PID is invisible from vscode-server, while normal cleanup still works.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, r, typescript, vscode
- Domain
- developer-experience, operating-systems, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100