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

future unable to export libraries of list encapsulated functions #741

Open
gowerc opened this issue Oct 1, 2024 · 0 comments
Open

future unable to export libraries of list encapsulated functions #741

gowerc opened this issue Oct 1, 2024 · 0 comments
Labels

Comments

@gowerc
Copy link

gowerc commented Oct 1, 2024

Describe the bug

If a function is wrapped in a list then future seems to be unable to detect the libraries used by that function:

library(lubridate)
library(future)
my_a_fun <- function(x) {
    zz <- days(3)
    x
}
callme <- function(fun) {
    obj <- list(funny = fun)
    wrapper <- function(x) {
        obj$funny(x)
    }
    future::future(wrapper(1))
}

plan(multisession, workers = 2)
value(callme(my_a_fun))

Error in days(3) : could not find function "days"

Expected behavior

That it would be able to recognise that the lubridate library is required

Session information

Please share your session information after the error has occurred so that we also see which packages and versions are involved;

> sessionInfo()
R version 4.4.1 (2024-06-14)
Platform: x86_64-apple-darwin23.4.0
Running under: macOS Sonoma 14.6.1

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 
LAPACK: /usr/local/Cellar/r/4.4.1/lib/R/lib/libRlapack.dylib;  LAPACK version 3.12.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Europe/London
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lubridate_1.9.3 future_1.34.0  

loaded via a namespace (and not attached):
 [1] compiler_4.4.1    parallelly_1.38.0 generics_0.1.3    parallel_4.4.1    tools_4.4.1       rstudioapi_0.16.0 listenv_0.9.1     codetools_0.2-20 
 [9] digest_0.6.37     globals_0.16.3    timechange_0.3.0



> future::futureSessionInfo()
*** Package versions
future 1.34.0, parallelly 1.38.0, parallel 4.4.1, globals 0.16.3, listenv 0.9.1

*** Allocations
availableCores():
system 
    12 
availableWorkers():
$system
 [1] "localhost" "localhost" "localhost" "localhost" "localhost" "localhost" "localhost" "localhost" "localhost" "localhost" "localhost" "localhost"


*** Settings
- future.plan=<not set>
- future.fork.multithreading.enable=<not set>
- future.globals.maxSize=<not set>
- future.globals.onReference=<not set>
- future.resolve.recursive=<not set>
- future.rng.onMisuse=<not set>
- future.wait.timeout=<not set>
- future.wait.interval=<not set>
- future.wait.alpha=<not set>
- future.startup.script=<not set>

*** Backends
Number of workers: 2
List of future strategies:
1. multisession:
   - args: function (..., workers = 2, envir = parent.frame())
   - tweaked: TRUE
   - call: plan(multisession, workers = 2)

*** Basic tests
Main R session details:
    pid     r sysname release                                                                                           version nodename machine
1 65511 4.4.1  Darwin  23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:13:00 PDT 2024; root:xnu-10063.141.2~1/RELEASE_X86_64  host001  x86_64
    login    user effective_user
1 user001 user001        user001
Worker R session details:
  worker   pid     r sysname release                                                                                           version nodename
1      1 65631 4.4.1  Darwin  23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:13:00 PDT 2024; root:xnu-10063.141.2~1/RELEASE_X86_64  host001
2      2 65632 4.4.1  Darwin  23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:13:00 PDT 2024; root:xnu-10063.141.2~1/RELEASE_X86_64  host001
  machine   login    user effective_user
1  x86_64 user001 user001        user001
2  x86_64 user001 user001        user001
Number of unique worker PIDs: 2 (as expected)
@gowerc gowerc added the bug label Oct 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant