klmr / box

Write reusable, composable and modular R code
https://klmr.me/box/
MIT License
829 stars 47 forks source link

`box::use` searches wrong directory inside parallel foreach execution #312

Open klmr opened 1 year ago

klmr commented 1 year ago

Error description

MWE:

$ tree mwe
mwe
├── mod.r
└── mwe.r

mwe/mod.r

#' @export
run_sqrt <- function (x) {
  sqrt(x)
}

mwe/mwe.r

box::use(
  parallel,
  dp = doParallel,
  foreach[foreach, `%dopar%`],
)

cl <- parallel$makeCluster(2L)
dp$registerDoParallel(cl)

foreach(i = 1 : 5) %dopar% {
  box::use(./mod[...])
  run_sqrt(i)
}

Run via:

Rscript mwe/mwe.r

Yields the following error:

Error in { :
  task 1 failed - " unable to load module “./mod”; not found in “path/to/PWD”"
Calls: %dopar% -> <Anonymous>

R version

_
platform       x86_64-pc-linux-gnu
arch           x86_64
os             linux-gnu
system         x86_64, linux-gnu
status
major          4
minor          2.0
year           2022
month          04
day            22
svn rev        82229
language       R
version.string R version 4.2.0 (2022-04-22)
nickname       Vigorous Calisthenics

‘box’ version

1.1.2.9000