Skip to content

Avoid .R file lock on windows#1192

Merged
renkun-ken merged 3 commits into
REditorSupport:masterfrom
ManuelHentschel:filelock
Sep 18, 2022
Merged

Avoid .R file lock on windows#1192
renkun-ken merged 3 commits into
REditorSupport:masterfrom
ManuelHentschel:filelock

Conversation

@ManuelHentschel

Copy link
Copy Markdown
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.

@renkun-ken renkun-ken left a comment

Copy link
Copy Markdown
Member

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.

Comment thread src/helpViewer/helpProvider.ts Outdated
@ManuelHentschel

Copy link
Copy Markdown
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).

Comment thread src/helpViewer/helpProvider.ts Outdated

@renkun-ken renkun-ken left a comment

Copy link
Copy Markdown
Member

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.

2 participants