REditorSupport / vscode-R

R Extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=REditorSupport.r
MIT License
1.06k stars 125 forks source link

Session watcher should not rely on pid #1391

Open IllustratedMan-code opened 1 year ago

IllustratedMan-code commented 1 year ago

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.

renkun-ken commented 1 year ago

Thanks for reporting! #1321 introduces a mechanism to detach from non-existing process. It will definitely be useful if we let session watcher be aware of the scenario where the process is not directly accessible from the server running session watcher.

IllustratedMan-code commented 1 year ago

After some attempts, it think that the way the extension currently works makes my particular use case impossible. I found out that the nodes don't share tmp directories, so that's a non-starter.

renkun-ken commented 1 year ago

If the nodes share a file system which supports file watcher, then it might be possible to make session watcher work by making ~/.vscode-R a symlink to a user folder in the shared file system in all cluster nodes.

Tal500 commented 1 year ago

If the nodes share a file system which supports file watcher, then it might be possible to make session watcher work by making ~/.vscode-R a symlink to a user folder in the shared file system in all cluster nodes.

Please notice that this way is problematic, since typically (e.g. on NFS in linux) there will be no notification of the os when a remote file is changed (aka. in linux iNotify event).

Hope that a solution to #1359 will fix it.

github-actions[bot] commented 1 month ago

This issue is stale because it has been open for 365 days with no activity.

Tal500 commented 1 month ago

Any update?