[Bioc-devel] palomino4 CHECK error "permission denied" msqrob2
Hervé Pagès
hp@ge@@on@g|thub @end|ng |rom gm@||@com
Fri Oct 28 19:00:16 CEST 2022
Hi Stijn,
Note that today the error is gone.
This is a race condition in 'R CMD check' that affects some packages on
Windows. What 'R CMD check' is trying to do here is open the
msqrob2-Ex.Rout file but that file is still being written to by another
process. Windows (unlike Linux or macOS) doesn't like that: it won't let
a process open a file if the file is being hold by another process.
More precisely here is what is happening here:
- One of the checks that 'R CMD check' performs is to run all the
examples in a package, and to capture the output produced by the
examples in a file (the msqrob2-Ex.Rout in your case).
- Once it's done running the examples, 'R CMD check' wants to know if
the examples produced errors. It does this by parsing the
msqrob2-Ex.Rout file. That's when it tries to open the file in read-only
mode.
- But sometimes, when 'R CMD check' tries to open msqrob2-Ex.Rout in
read-only mode, other processes are still holding on the msqrob2-Ex.Rout
file. This typically happens when the examples in the package spawn
subprocesses. For example these spawned processes can be the workers
spawned by BiocParallel or by other parallel evaluation mechanism (e.g.
doParallel/foreach). Note that there can be a very small lag between the
moment the main worker and the spawned workers are done. If one of the
spawned workers takes a fraction of an extra second to finish writing
some output to msqrob2-Ex.Rout, then 'R CMD check' won't be able to open
the file.
One could argue that this is an issue with 'R CMD check'. Maybe on
Windows it should wait a couple of seconds before trying to open
msqrob2-Ex.Rout, I don't know.
Maybe there's something that could be done in BiocParallel too. I don't
know how hard that would be, or if that's even feasible, but maybe
there's a way that the main worker could wait and make sure that all the
spawn processes are dead before returning. I guess that kind of feature
would only make sense for some parallel back-ends.
Does some of the examples in msqrob2 use parallelization? If so maybe
you can try to add a call to Sys.sleep(2) at the end of those examples
and see if that helps.
In any case there's nothing that can really be done on our Windows
builders to prevent this, sorry.
Hope this helps,
H.
On 28/10/2022 06:29, vandenbulcke stijn wrote:
> Dear All,
>
> On the palomino4 host the check for msqrob2 returns the following error (
> http://bioconductor.org/checkResults/devel/bioc-LATEST/msqrob2/palomino4-checksrc.html
> )
>
> * checking examples ...Warning in file(con, "r") :
> cannot open file 'msqrob2-Ex.Rout': Permission denied
> Error in file(con, "r") : cannot open the connection
> Execution halted
>
> I am however not able to reproduce this, and it works on the other hosts.
> Would anyone know the cause of this issue?
>
> Thanks in advance
> Stijn
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioc-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
--
Hervé Pagès
Bioconductor Core Team
hpages.on.github using gmail.com
More information about the Bioc-devel
mailing list