Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid .R file lock on windows #1192

Merged
merged 3 commits into from
Sep 18, 2022

Conversation

ManuelHentschel
Copy link
Member

This PR avoids a file lock issue (observed on windows, probably not an issue on linux): Sourcing .R file using R -f xxx.R locks the file and as a consequence it's impossible to reinstall this extension while it is running. This is particularly annoying when working on the extension itself, since it contains R code and is therefore activated automatically.

This problem is solved by sourcing .R files using R -e source('xxx.r'), which does not appear to lock the file.

Copy link
Member

@renkun-ken renkun-ken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if it is a good idea to use source() instead of direct supplying a file. Changing the content of an R file while it is running by Rscript might cause the R session to fail sometimes.

src/helpViewer/helpProvider.ts Outdated Show resolved Hide resolved
@ManuelHentschel
Copy link
Member Author

Not sure if it is a good idea to use source() instead of direct supplying a file. Changing the content of an R file while it is running by Rscript might cause the R session to fail sometimes.

This problem would be solved by using source(), since source first parses the entire file and then starts executing. Therefore, background processes like the languageserver and helpserver do not depend on the original file at all, once they start running. IMO this is the ideal behavior. In contrast, on windows Rscript locks the file, making it impossible to quickly reinstall the extension.

On Linux/macos, I'm not sure how exactly this is handled by Rscript. Apparently it is possible to write a script that deletes itself (and does something afterwards) and run it with Rscript, but I'm not sure what the limits to this are (i.e. whether Rscript always reads the entire file first, or I just got lucky and my test script was short enough to be read at once).

Copy link
Member

@renkun-ken renkun-ken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@renkun-ken renkun-ken merged commit 402e4e8 into REditorSupport:master Sep 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants