R Under development (unstable) (2023-12-20 r85713 ucrt) -- "Unsuffered Consequences" Copyright (C) 2023 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > source("incl/start.R") [01:28:17.694] plan(): Setting new future strategy stack: [01:28:17.696] List of future strategies: [01:28:17.696] 1. sequential: [01:28:17.696] - args: function (..., envir = parent.frame(), workers = "") [01:28:17.696] - tweaked: FALSE [01:28:17.696] - call: future::plan("sequential") [01:28:17.724] plan(): nbrOfWorkers() = 1 > > ## Local functions > usedNodes <- function(future) { + ## Number of unresolved cluster futures + workers <- future$workers + reg <- sprintf("workers-%s", attr(workers, "name")) + c(used = length(future:::FutureRegistry(reg, action = "list")), total = length(workers)) + } > > ## This test requires at least two background processes > plan(multisession, workers = 2L) [01:28:17.736] plan(): Setting new future strategy stack: [01:28:17.736] List of future strategies: [01:28:17.736] 1. multisession: [01:28:17.736] - args: function (..., workers = 2L, envir = parent.frame()) [01:28:17.736] - tweaked: TRUE [01:28:17.736] - call: plan(multisession, workers = 2L) [01:28:17.752] plan(): plan_init() of 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' ... [01:28:17.752] multisession: [01:28:17.752] - args: function (..., workers = 2L, envir = parent.frame()) [01:28:17.752] - tweaked: TRUE [01:28:17.752] - call: plan(multisession, workers = 2L) [01:28:17.757] getGlobalsAndPackages() ... [01:28:17.757] Not searching for globals [01:28:17.757] - globals: [0] [01:28:17.758] getGlobalsAndPackages() ... DONE [01:28:17.758] [local output] makeClusterPSOCK() ... [01:28:17.853] [local output] Workers: [n = 2] 'localhost', 'localhost' [01:28:17.860] [local output] Base port: 39961 [01:28:17.860] [local output] Getting setup options for 2 cluster nodes ... [01:28:17.861] [local output] - Node 1 of 2 ... [01:28:17.861] [local output] localMachine=TRUE => revtunnel=FALSE [01:28:17.863] Testing if worker's PID can be inferred: '"D:/RCompile/recent/R/bin/x64/Rscript" -e "try(suppressWarnings(cat(Sys.getpid(),file=\"D:/temp/RtmpMlj1kB/worker.rank=1.parallelly.parent=13708.358c49a86a1.pid\")), silent = TRUE)" -e "file.exists(\"D:/temp/RtmpMlj1kB/worker.rank=1.parallelly.parent=13708.358c49a86a1.pid\")"' [01:28:18.199] - Possible to infer worker's PID: TRUE [01:28:18.200] [local output] Rscript port: 39961 [01:28:18.200] [local output] - Node 2 of 2 ... [01:28:18.201] [local output] localMachine=TRUE => revtunnel=FALSE [01:28:18.202] [local output] Rscript port: 39961 [01:28:18.203] [local output] Getting setup options for 2 cluster nodes ... done [01:28:18.203] [local output] - Parallel setup requested for some PSOCK nodes [01:28:18.204] [local output] Setting up PSOCK nodes in parallel [01:28:18.204] List of 36 [01:28:18.204] $ worker : chr "localhost" [01:28:18.204] ..- attr(*, "localhost")= logi TRUE [01:28:18.204] $ master : chr "localhost" [01:28:18.204] $ port : int 39961 [01:28:18.204] $ connectTimeout : num 120 [01:28:18.204] $ timeout : num 120 [01:28:18.204] $ rscript : chr "\"D:/RCompile/recent/R/bin/x64/Rscript\"" [01:28:18.204] $ homogeneous : logi TRUE [01:28:18.204] $ rscript_args : chr "--default-packages=datasets,utils,grDevices,graphics,stats,methods -e \"#label=invalid-owner.R:13708:CRANWIN3:C"| __truncated__ [01:28:18.204] $ rscript_envs : NULL [01:28:18.204] $ rscript_libs : chr [1:2] "D:/temp/RtmpCIb4qz/RLIBS_32fc52ae7b47" "D:/RCompile/recent/R/library" [01:28:18.204] $ rscript_startup : NULL [01:28:18.204] $ rscript_sh : chr "cmd" [01:28:18.204] $ default_packages: chr [1:6] "datasets" "utils" "grDevices" "graphics" ... [01:28:18.204] $ methods : logi TRUE [01:28:18.204] $ socketOptions : chr "no-delay" [01:28:18.204] $ useXDR : logi FALSE [01:28:18.204] $ outfile : chr "/dev/null" [01:28:18.204] $ renice : int NA [01:28:18.204] $ rshcmd : NULL [01:28:18.204] $ user : chr(0) [01:28:18.204] $ revtunnel : logi FALSE [01:28:18.204] $ rshlogfile : NULL [01:28:18.204] $ rshopts : chr(0) [01:28:18.204] $ rank : int 1 [01:28:18.204] $ manual : logi FALSE [01:28:18.204] $ dryrun : logi FALSE [01:28:18.204] $ quiet : logi FALSE [01:28:18.204] $ setup_strategy : chr "parallel" [01:28:18.204] $ local_cmd : chr "\"D:/RCompile/recent/R/bin/x64/Rscript\" --default-packages=datasets,utils,grDevices,graphics,stats,methods -e "| __truncated__ [01:28:18.204] $ pidfile : chr "D:/temp/RtmpMlj1kB/worker.rank=1.parallelly.parent=13708.358c49a86a1.pid" [01:28:18.204] $ rshcmd_label : NULL [01:28:18.204] $ rsh_call : NULL [01:28:18.204] $ cmd : chr "\"D:/RCompile/recent/R/bin/x64/Rscript\" --default-packages=datasets,utils,grDevices,graphics,stats,methods -e "| __truncated__ [01:28:18.204] $ localMachine : logi TRUE [01:28:18.204] $ make_fcn :function (worker = getOption2("parallelly.localhost.hostname", "localhost"), [01:28:18.204] master = NULL, port, connectTimeout = getOption2("parallelly.makeNodePSOCK.connectTimeout", [01:28:18.204] 2 * 60), timeout = getOption2("parallelly.makeNodePSOCK.timeout", [01:28:18.204] 30 * 24 * 60 * 60), rscript = NULL, homogeneous = NULL, rscript_args = NULL, [01:28:18.204] rscript_envs = NULL, rscript_libs = NULL, rscript_startup = NULL, rscript_sh = c("auto", [01:28:18.204] "cmd", "sh"), default_packages = c("datasets", "utils", "grDevices", [01:28:18.204] "graphics", "stats", if (methods) "methods"), methods = TRUE, socketOptions = getOption2("parallelly.makeNodePSOCK.socketOptions", [01:28:18.204] "no-delay"), useXDR = getOption2("parallelly.makeNodePSOCK.useXDR", [01:28:18.204] FALSE), outfile = "/dev/null", renice = NA_integer_, rshcmd = getOption2("parallelly.makeNodePSOCK.rshcmd", [01:28:18.204] NULL), user = NULL, revtunnel = NA, rshlogfile = NULL, rshopts = getOption2("parallelly.makeNodePSOCK.rshopts", [01:28:18.204] NULL), rank = 1L, manual = FALSE, dryrun = FALSE, quiet = FALSE, [01:28:18.204] setup_strategy = getOption2("parallelly.makeNodePSOCK.setup_strategy", [01:28:18.204] "parallel"), action = c("launch", "options"), verbose = FALSE) [01:28:18.204] $ arguments :List of 28 [01:28:18.204] ..$ worker : chr "localhost" [01:28:18.204] ..$ master : NULL [01:28:18.204] ..$ port : int 39961 [01:28:18.204] ..$ connectTimeout : num 120 [01:28:18.204] ..$ timeout : num 120 [01:28:18.204] ..$ rscript : NULL [01:28:18.204] ..$ homogeneous : NULL [01:28:18.204] ..$ rscript_args : NULL [01:28:18.204] ..$ rscript_envs : NULL [01:28:18.204] ..$ rscript_libs : chr [1:2] "D:/temp/RtmpCIb4qz/RLIBS_32fc52ae7b47" "D:/RCompile/recent/R/library" [01:28:18.204] ..$ rscript_startup : NULL [01:28:18.204] ..$ rscript_sh : chr [1:3] "auto" "cmd" "sh" [01:28:18.204] ..$ default_packages: chr [1:6] "datasets" "utils" "grDevices" "graphics" ... [01:28:18.204] ..$ methods : logi TRUE [01:28:18.204] ..$ socketOptions : chr "no-delay" [01:28:18.204] ..$ useXDR : logi FALSE [01:28:18.204] ..$ outfile : chr "/dev/null" [01:28:18.204] ..$ renice : int NA [01:28:18.204] ..$ rshcmd : NULL [01:28:18.204] ..$ user : NULL [01:28:18.204] ..$ revtunnel : logi NA [01:28:18.204] ..$ rshlogfile : NULL [01:28:18.204] ..$ rshopts : NULL [01:28:18.204] ..$ rank : int 1 [01:28:18.204] ..$ manual : logi FALSE [01:28:18.204] ..$ dryrun : logi FALSE [01:28:18.204] ..$ quiet : logi FALSE [01:28:18.204] ..$ setup_strategy : chr "parallel" [01:28:18.204] - attr(*, "class")= chr [1:2] "makeNodePSOCKOptions" "makeNodeOptions" [01:28:18.228] [local output] System call to launch all workers: [01:28:18.229] [local output] "D:/RCompile/recent/R/bin/x64/Rscript" --default-packages=datasets,utils,grDevices,graphics,stats,methods -e "#label=invalid-owner.R:13708:CRANWIN3:CRAN" -e "try(suppressWarnings(cat(Sys.getpid(),file=\"D:/temp/RtmpMlj1kB/worker.rank=1.parallelly.parent=13708.358c49a86a1.pid\")), silent = TRUE)" -e "options(socketOptions = \"no-delay\")" -e ".libPaths(c(\"D:/temp/RtmpCIb4qz/RLIBS_32fc52ae7b47\",\"D:/RCompile/recent/R/library\"))" -e "workRSOCK <- tryCatch(parallel:::.workRSOCK, error=function(e) parallel:::.slaveRSOCK); workRSOCK()" MASTER=localhost PORT=39961 OUT=/dev/null TIMEOUT=120 XDR=FALSE SETUPTIMEOUT=120 SETUPSTRATEGY=parallel [01:28:18.229] [local output] Starting PSOCK main server [01:28:18.235] [local output] Workers launched [01:28:18.235] [local output] Waiting for workers to connect back [01:28:18.236] - [local output] 0 workers out of 2 ready [01:28:18.418] - [local output] 0 workers out of 2 ready [01:28:18.419] - [local output] 1 workers out of 2 ready [01:28:18.424] - [local output] 1 workers out of 2 ready [01:28:18.425] - [local output] 2 workers out of 2 ready [01:28:18.425] [local output] Launching of workers completed [01:28:18.425] [local output] Collecting session information from workers [01:28:18.426] [local output] - Worker #1 of 2 [01:28:18.427] [local output] - Worker #2 of 2 [01:28:18.427] [local output] makeClusterPSOCK() ... done [01:28:18.441] Packages needed by the future expression (n = 0): [01:28:18.441] Packages needed by future strategies (n = 0): [01:28:18.442] { [01:28:18.442] { [01:28:18.442] { [01:28:18.442] ...future.startTime <- base::Sys.time() [01:28:18.442] { [01:28:18.442] { [01:28:18.442] { [01:28:18.442] { [01:28:18.442] base::local({ [01:28:18.442] has_future <- base::requireNamespace("future", [01:28:18.442] quietly = TRUE) [01:28:18.442] if (has_future) { [01:28:18.442] ns <- base::getNamespace("future") [01:28:18.442] version <- ns[[".package"]][["version"]] [01:28:18.442] if (is.null(version)) [01:28:18.442] version <- utils::packageVersion("future") [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] version <- NULL [01:28:18.442] } [01:28:18.442] if (!has_future || version < "1.8.0") { [01:28:18.442] info <- base::c(r_version = base::gsub("R version ", [01:28:18.442] "", base::R.version$version.string), [01:28:18.442] platform = base::sprintf("%s (%s-bit)", [01:28:18.442] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.442] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.442] "release", "version")], collapse = " "), [01:28:18.442] hostname = base::Sys.info()[["nodename"]]) [01:28:18.442] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.442] info) [01:28:18.442] info <- base::paste(info, collapse = "; ") [01:28:18.442] if (!has_future) { [01:28:18.442] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.442] info) [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.442] info, version) [01:28:18.442] } [01:28:18.442] base::stop(msg) [01:28:18.442] } [01:28:18.442] }) [01:28:18.442] } [01:28:18.442] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.442] base::options(mc.cores = 1L) [01:28:18.442] } [01:28:18.442] options(future.plan = NULL) [01:28:18.442] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.442] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.442] } [01:28:18.442] ...future.workdir <- getwd() [01:28:18.442] } [01:28:18.442] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.442] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.442] } [01:28:18.442] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.442] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.442] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.442] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.442] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.442] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.442] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.442] base::names(...future.oldOptions)) [01:28:18.442] } [01:28:18.442] if (FALSE) { [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] if (TRUE) { [01:28:18.442] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.442] open = "w") [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.442] windows = "NUL", "/dev/null"), open = "w") [01:28:18.442] } [01:28:18.442] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.442] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.442] base::sink(type = "output", split = FALSE) [01:28:18.442] base::close(...future.stdout) [01:28:18.442] }, add = TRUE) [01:28:18.442] } [01:28:18.442] ...future.frame <- base::sys.nframe() [01:28:18.442] ...future.conditions <- base::list() [01:28:18.442] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.442] if (FALSE) { [01:28:18.442] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.442] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.442] } [01:28:18.442] ...future.result <- base::tryCatch({ [01:28:18.442] base::withCallingHandlers({ [01:28:18.442] ...future.value <- base::withVisible(base::local({ [01:28:18.442] ...future.makeSendCondition <- base::local({ [01:28:18.442] sendCondition <- NULL [01:28:18.442] function(frame = 1L) { [01:28:18.442] if (is.function(sendCondition)) [01:28:18.442] return(sendCondition) [01:28:18.442] ns <- getNamespace("parallel") [01:28:18.442] if (exists("sendData", mode = "function", [01:28:18.442] envir = ns)) { [01:28:18.442] parallel_sendData <- get("sendData", mode = "function", [01:28:18.442] envir = ns) [01:28:18.442] envir <- sys.frame(frame) [01:28:18.442] master <- NULL [01:28:18.442] while (!identical(envir, .GlobalEnv) && [01:28:18.442] !identical(envir, emptyenv())) { [01:28:18.442] if (exists("master", mode = "list", envir = envir, [01:28:18.442] inherits = FALSE)) { [01:28:18.442] master <- get("master", mode = "list", [01:28:18.442] envir = envir, inherits = FALSE) [01:28:18.442] if (inherits(master, c("SOCKnode", [01:28:18.442] "SOCK0node"))) { [01:28:18.442] sendCondition <<- function(cond) { [01:28:18.442] data <- list(type = "VALUE", value = cond, [01:28:18.442] success = TRUE) [01:28:18.442] parallel_sendData(master, data) [01:28:18.442] } [01:28:18.442] return(sendCondition) [01:28:18.442] } [01:28:18.442] } [01:28:18.442] frame <- frame + 1L [01:28:18.442] envir <- sys.frame(frame) [01:28:18.442] } [01:28:18.442] } [01:28:18.442] sendCondition <<- function(cond) NULL [01:28:18.442] } [01:28:18.442] }) [01:28:18.442] withCallingHandlers({ [01:28:18.442] NA [01:28:18.442] }, immediateCondition = function(cond) { [01:28:18.442] sendCondition <- ...future.makeSendCondition() [01:28:18.442] sendCondition(cond) [01:28:18.442] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.442] { [01:28:18.442] inherits <- base::inherits [01:28:18.442] invokeRestart <- base::invokeRestart [01:28:18.442] is.null <- base::is.null [01:28:18.442] muffled <- FALSE [01:28:18.442] if (inherits(cond, "message")) { [01:28:18.442] muffled <- grepl(pattern, "muffleMessage") [01:28:18.442] if (muffled) [01:28:18.442] invokeRestart("muffleMessage") [01:28:18.442] } [01:28:18.442] else if (inherits(cond, "warning")) { [01:28:18.442] muffled <- grepl(pattern, "muffleWarning") [01:28:18.442] if (muffled) [01:28:18.442] invokeRestart("muffleWarning") [01:28:18.442] } [01:28:18.442] else if (inherits(cond, "condition")) { [01:28:18.442] if (!is.null(pattern)) { [01:28:18.442] computeRestarts <- base::computeRestarts [01:28:18.442] grepl <- base::grepl [01:28:18.442] restarts <- computeRestarts(cond) [01:28:18.442] for (restart in restarts) { [01:28:18.442] name <- restart$name [01:28:18.442] if (is.null(name)) [01:28:18.442] next [01:28:18.442] if (!grepl(pattern, name)) [01:28:18.442] next [01:28:18.442] invokeRestart(restart) [01:28:18.442] muffled <- TRUE [01:28:18.442] break [01:28:18.442] } [01:28:18.442] } [01:28:18.442] } [01:28:18.442] invisible(muffled) [01:28:18.442] } [01:28:18.442] muffleCondition(cond) [01:28:18.442] }) [01:28:18.442] })) [01:28:18.442] future::FutureResult(value = ...future.value$value, [01:28:18.442] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.442] ...future.rng), globalenv = if (FALSE) [01:28:18.442] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.442] ...future.globalenv.names)) [01:28:18.442] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.442] }, condition = base::local({ [01:28:18.442] c <- base::c [01:28:18.442] inherits <- base::inherits [01:28:18.442] invokeRestart <- base::invokeRestart [01:28:18.442] length <- base::length [01:28:18.442] list <- base::list [01:28:18.442] seq.int <- base::seq.int [01:28:18.442] signalCondition <- base::signalCondition [01:28:18.442] sys.calls <- base::sys.calls [01:28:18.442] `[[` <- base::`[[` [01:28:18.442] `+` <- base::`+` [01:28:18.442] `<<-` <- base::`<<-` [01:28:18.442] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.442] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.442] 3L)] [01:28:18.442] } [01:28:18.442] function(cond) { [01:28:18.442] is_error <- inherits(cond, "error") [01:28:18.442] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.442] NULL) [01:28:18.442] if (is_error) { [01:28:18.442] sessionInformation <- function() { [01:28:18.442] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.442] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.442] search = base::search(), system = base::Sys.info()) [01:28:18.442] } [01:28:18.442] ...future.conditions[[length(...future.conditions) + [01:28:18.442] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.442] cond$call), session = sessionInformation(), [01:28:18.442] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.442] signalCondition(cond) [01:28:18.442] } [01:28:18.442] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.442] "immediateCondition"))) { [01:28:18.442] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.442] ...future.conditions[[length(...future.conditions) + [01:28:18.442] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.442] if (TRUE && !signal) { [01:28:18.442] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.442] { [01:28:18.442] inherits <- base::inherits [01:28:18.442] invokeRestart <- base::invokeRestart [01:28:18.442] is.null <- base::is.null [01:28:18.442] muffled <- FALSE [01:28:18.442] if (inherits(cond, "message")) { [01:28:18.442] muffled <- grepl(pattern, "muffleMessage") [01:28:18.442] if (muffled) [01:28:18.442] invokeRestart("muffleMessage") [01:28:18.442] } [01:28:18.442] else if (inherits(cond, "warning")) { [01:28:18.442] muffled <- grepl(pattern, "muffleWarning") [01:28:18.442] if (muffled) [01:28:18.442] invokeRestart("muffleWarning") [01:28:18.442] } [01:28:18.442] else if (inherits(cond, "condition")) { [01:28:18.442] if (!is.null(pattern)) { [01:28:18.442] computeRestarts <- base::computeRestarts [01:28:18.442] grepl <- base::grepl [01:28:18.442] restarts <- computeRestarts(cond) [01:28:18.442] for (restart in restarts) { [01:28:18.442] name <- restart$name [01:28:18.442] if (is.null(name)) [01:28:18.442] next [01:28:18.442] if (!grepl(pattern, name)) [01:28:18.442] next [01:28:18.442] invokeRestart(restart) [01:28:18.442] muffled <- TRUE [01:28:18.442] break [01:28:18.442] } [01:28:18.442] } [01:28:18.442] } [01:28:18.442] invisible(muffled) [01:28:18.442] } [01:28:18.442] muffleCondition(cond, pattern = "^muffle") [01:28:18.442] } [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] if (TRUE) { [01:28:18.442] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.442] { [01:28:18.442] inherits <- base::inherits [01:28:18.442] invokeRestart <- base::invokeRestart [01:28:18.442] is.null <- base::is.null [01:28:18.442] muffled <- FALSE [01:28:18.442] if (inherits(cond, "message")) { [01:28:18.442] muffled <- grepl(pattern, "muffleMessage") [01:28:18.442] if (muffled) [01:28:18.442] invokeRestart("muffleMessage") [01:28:18.442] } [01:28:18.442] else if (inherits(cond, "warning")) { [01:28:18.442] muffled <- grepl(pattern, "muffleWarning") [01:28:18.442] if (muffled) [01:28:18.442] invokeRestart("muffleWarning") [01:28:18.442] } [01:28:18.442] else if (inherits(cond, "condition")) { [01:28:18.442] if (!is.null(pattern)) { [01:28:18.442] computeRestarts <- base::computeRestarts [01:28:18.442] grepl <- base::grepl [01:28:18.442] restarts <- computeRestarts(cond) [01:28:18.442] for (restart in restarts) { [01:28:18.442] name <- restart$name [01:28:18.442] if (is.null(name)) [01:28:18.442] next [01:28:18.442] if (!grepl(pattern, name)) [01:28:18.442] next [01:28:18.442] invokeRestart(restart) [01:28:18.442] muffled <- TRUE [01:28:18.442] break [01:28:18.442] } [01:28:18.442] } [01:28:18.442] } [01:28:18.442] invisible(muffled) [01:28:18.442] } [01:28:18.442] muffleCondition(cond, pattern = "^muffle") [01:28:18.442] } [01:28:18.442] } [01:28:18.442] } [01:28:18.442] })) [01:28:18.442] }, error = function(ex) { [01:28:18.442] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.442] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.442] ...future.rng), started = ...future.startTime, [01:28:18.442] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.442] version = "1.8"), class = "FutureResult") [01:28:18.442] }, finally = { [01:28:18.442] if (!identical(...future.workdir, getwd())) [01:28:18.442] setwd(...future.workdir) [01:28:18.442] { [01:28:18.442] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.442] ...future.oldOptions$nwarnings <- NULL [01:28:18.442] } [01:28:18.442] base::options(...future.oldOptions) [01:28:18.442] if (.Platform$OS.type == "windows") { [01:28:18.442] old_names <- names(...future.oldEnvVars) [01:28:18.442] envs <- base::Sys.getenv() [01:28:18.442] names <- names(envs) [01:28:18.442] common <- intersect(names, old_names) [01:28:18.442] added <- setdiff(names, old_names) [01:28:18.442] removed <- setdiff(old_names, names) [01:28:18.442] changed <- common[...future.oldEnvVars[common] != [01:28:18.442] envs[common]] [01:28:18.442] NAMES <- toupper(changed) [01:28:18.442] args <- list() [01:28:18.442] for (kk in seq_along(NAMES)) { [01:28:18.442] name <- changed[[kk]] [01:28:18.442] NAME <- NAMES[[kk]] [01:28:18.442] if (name != NAME && is.element(NAME, old_names)) [01:28:18.442] next [01:28:18.442] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.442] } [01:28:18.442] NAMES <- toupper(added) [01:28:18.442] for (kk in seq_along(NAMES)) { [01:28:18.442] name <- added[[kk]] [01:28:18.442] NAME <- NAMES[[kk]] [01:28:18.442] if (name != NAME && is.element(NAME, old_names)) [01:28:18.442] next [01:28:18.442] args[[name]] <- "" [01:28:18.442] } [01:28:18.442] NAMES <- toupper(removed) [01:28:18.442] for (kk in seq_along(NAMES)) { [01:28:18.442] name <- removed[[kk]] [01:28:18.442] NAME <- NAMES[[kk]] [01:28:18.442] if (name != NAME && is.element(NAME, old_names)) [01:28:18.442] next [01:28:18.442] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.442] } [01:28:18.442] if (length(args) > 0) [01:28:18.442] base::do.call(base::Sys.setenv, args = args) [01:28:18.442] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.442] } [01:28:18.442] { [01:28:18.442] if (base::length(...future.futureOptionsAdded) > [01:28:18.442] 0L) { [01:28:18.442] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.442] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.442] base::options(opts) [01:28:18.442] } [01:28:18.442] { [01:28:18.442] { [01:28:18.442] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.442] NULL [01:28:18.442] } [01:28:18.442] options(future.plan = NULL) [01:28:18.442] if (is.na(NA_character_)) [01:28:18.442] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.442] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.442] future::plan(list(function (..., workers = 2L, [01:28:18.442] envir = parent.frame()) [01:28:18.442] strategy(..., workers = workers, envir = envir)), [01:28:18.442] .cleanup = FALSE, .init = FALSE) [01:28:18.442] } [01:28:18.442] } [01:28:18.442] } [01:28:18.442] }) [01:28:18.442] if (TRUE) { [01:28:18.442] base::sink(type = "output", split = FALSE) [01:28:18.442] if (TRUE) { [01:28:18.442] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.442] } [01:28:18.442] else { [01:28:18.442] ...future.result["stdout"] <- base::list(NULL) [01:28:18.442] } [01:28:18.442] base::close(...future.stdout) [01:28:18.442] ...future.stdout <- NULL [01:28:18.442] } [01:28:18.442] ...future.result$conditions <- ...future.conditions [01:28:18.442] ...future.result$finished <- base::Sys.time() [01:28:18.442] ...future.result [01:28:18.442] } [01:28:18.522] MultisessionFuture started [01:28:18.523] result() for ClusterFuture ... [01:28:18.523] receiveMessageFromWorker() for ClusterFuture ... [01:28:18.524] - Validating connection of MultisessionFuture [01:28:18.576] - received message: FutureResult [01:28:18.577] - Received FutureResult [01:28:18.580] - Erased future from FutureRegistry [01:28:18.581] result() for ClusterFuture ... [01:28:18.581] - result already collected: FutureResult [01:28:18.581] result() for ClusterFuture ... done [01:28:18.581] receiveMessageFromWorker() for ClusterFuture ... done [01:28:18.581] result() for ClusterFuture ... done [01:28:18.582] result() for ClusterFuture ... [01:28:18.582] - result already collected: FutureResult [01:28:18.582] result() for ClusterFuture ... done [01:28:18.582] plan(): plan_init() of 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' ... DONE [01:28:18.583] plan(): nbrOfWorkers() = 2 > > message("*** future() - invalid ownership ...") *** future() - invalid ownership ... > > ## This R process > session_uuid <- future:::session_uuid(attributes = TRUE) > cat(sprintf("Main R process: %s\n", session_uuid)) Main R process: e2c891c4-cab0-ea03-2a69-bb67514aebf9 > > message("- Asserting ownership ...") - Asserting ownership ... > > message("Creating future #1:") Creating future #1: > f1 <- future({ future:::session_uuid(attributes = TRUE) }) [01:28:18.583] getGlobalsAndPackages() ... [01:28:18.583] Searching for globals... [01:28:18.592] - globals found: [2] '{', ':::' [01:28:18.592] Searching for globals ... DONE [01:28:18.593] Resolving globals: FALSE [01:28:18.593] [01:28:18.594] [01:28:18.594] getGlobalsAndPackages() ... DONE [01:28:18.594] run() for 'Future' ... [01:28:18.595] - state: 'created' [01:28:18.595] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.608] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.608] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.608] - Field: 'node' [01:28:18.608] - Field: 'label' [01:28:18.608] - Field: 'local' [01:28:18.609] - Field: 'owner' [01:28:18.609] - Field: 'envir' [01:28:18.609] - Field: 'workers' [01:28:18.609] - Field: 'packages' [01:28:18.609] - Field: 'gc' [01:28:18.610] - Field: 'conditions' [01:28:18.610] - Field: 'persistent' [01:28:18.610] - Field: 'expr' [01:28:18.610] - Field: 'uuid' [01:28:18.610] - Field: 'seed' [01:28:18.611] - Field: 'version' [01:28:18.611] - Field: 'result' [01:28:18.611] - Field: 'asynchronous' [01:28:18.611] - Field: 'calls' [01:28:18.612] - Field: 'globals' [01:28:18.612] - Field: 'stdout' [01:28:18.612] - Field: 'earlySignal' [01:28:18.612] - Field: 'lazy' [01:28:18.612] - Field: 'state' [01:28:18.613] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.613] - Launch lazy future ... [01:28:18.613] Packages needed by the future expression (n = 0): [01:28:18.613] Packages needed by future strategies (n = 0): [01:28:18.614] { [01:28:18.614] { [01:28:18.614] { [01:28:18.614] ...future.startTime <- base::Sys.time() [01:28:18.614] { [01:28:18.614] { [01:28:18.614] { [01:28:18.614] { [01:28:18.614] base::local({ [01:28:18.614] has_future <- base::requireNamespace("future", [01:28:18.614] quietly = TRUE) [01:28:18.614] if (has_future) { [01:28:18.614] ns <- base::getNamespace("future") [01:28:18.614] version <- ns[[".package"]][["version"]] [01:28:18.614] if (is.null(version)) [01:28:18.614] version <- utils::packageVersion("future") [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] version <- NULL [01:28:18.614] } [01:28:18.614] if (!has_future || version < "1.8.0") { [01:28:18.614] info <- base::c(r_version = base::gsub("R version ", [01:28:18.614] "", base::R.version$version.string), [01:28:18.614] platform = base::sprintf("%s (%s-bit)", [01:28:18.614] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.614] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.614] "release", "version")], collapse = " "), [01:28:18.614] hostname = base::Sys.info()[["nodename"]]) [01:28:18.614] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.614] info) [01:28:18.614] info <- base::paste(info, collapse = "; ") [01:28:18.614] if (!has_future) { [01:28:18.614] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.614] info) [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.614] info, version) [01:28:18.614] } [01:28:18.614] base::stop(msg) [01:28:18.614] } [01:28:18.614] }) [01:28:18.614] } [01:28:18.614] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.614] base::options(mc.cores = 1L) [01:28:18.614] } [01:28:18.614] options(future.plan = NULL) [01:28:18.614] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.614] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.614] } [01:28:18.614] ...future.workdir <- getwd() [01:28:18.614] } [01:28:18.614] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.614] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.614] } [01:28:18.614] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.614] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.614] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.614] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.614] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.614] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.614] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.614] base::names(...future.oldOptions)) [01:28:18.614] } [01:28:18.614] if (FALSE) { [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] if (TRUE) { [01:28:18.614] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.614] open = "w") [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.614] windows = "NUL", "/dev/null"), open = "w") [01:28:18.614] } [01:28:18.614] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.614] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.614] base::sink(type = "output", split = FALSE) [01:28:18.614] base::close(...future.stdout) [01:28:18.614] }, add = TRUE) [01:28:18.614] } [01:28:18.614] ...future.frame <- base::sys.nframe() [01:28:18.614] ...future.conditions <- base::list() [01:28:18.614] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.614] if (FALSE) { [01:28:18.614] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.614] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.614] } [01:28:18.614] ...future.result <- base::tryCatch({ [01:28:18.614] base::withCallingHandlers({ [01:28:18.614] ...future.value <- base::withVisible(base::local({ [01:28:18.614] ...future.makeSendCondition <- base::local({ [01:28:18.614] sendCondition <- NULL [01:28:18.614] function(frame = 1L) { [01:28:18.614] if (is.function(sendCondition)) [01:28:18.614] return(sendCondition) [01:28:18.614] ns <- getNamespace("parallel") [01:28:18.614] if (exists("sendData", mode = "function", [01:28:18.614] envir = ns)) { [01:28:18.614] parallel_sendData <- get("sendData", mode = "function", [01:28:18.614] envir = ns) [01:28:18.614] envir <- sys.frame(frame) [01:28:18.614] master <- NULL [01:28:18.614] while (!identical(envir, .GlobalEnv) && [01:28:18.614] !identical(envir, emptyenv())) { [01:28:18.614] if (exists("master", mode = "list", envir = envir, [01:28:18.614] inherits = FALSE)) { [01:28:18.614] master <- get("master", mode = "list", [01:28:18.614] envir = envir, inherits = FALSE) [01:28:18.614] if (inherits(master, c("SOCKnode", [01:28:18.614] "SOCK0node"))) { [01:28:18.614] sendCondition <<- function(cond) { [01:28:18.614] data <- list(type = "VALUE", value = cond, [01:28:18.614] success = TRUE) [01:28:18.614] parallel_sendData(master, data) [01:28:18.614] } [01:28:18.614] return(sendCondition) [01:28:18.614] } [01:28:18.614] } [01:28:18.614] frame <- frame + 1L [01:28:18.614] envir <- sys.frame(frame) [01:28:18.614] } [01:28:18.614] } [01:28:18.614] sendCondition <<- function(cond) NULL [01:28:18.614] } [01:28:18.614] }) [01:28:18.614] withCallingHandlers({ [01:28:18.614] { [01:28:18.614] future:::session_uuid(attributes = TRUE) [01:28:18.614] } [01:28:18.614] }, immediateCondition = function(cond) { [01:28:18.614] sendCondition <- ...future.makeSendCondition() [01:28:18.614] sendCondition(cond) [01:28:18.614] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.614] { [01:28:18.614] inherits <- base::inherits [01:28:18.614] invokeRestart <- base::invokeRestart [01:28:18.614] is.null <- base::is.null [01:28:18.614] muffled <- FALSE [01:28:18.614] if (inherits(cond, "message")) { [01:28:18.614] muffled <- grepl(pattern, "muffleMessage") [01:28:18.614] if (muffled) [01:28:18.614] invokeRestart("muffleMessage") [01:28:18.614] } [01:28:18.614] else if (inherits(cond, "warning")) { [01:28:18.614] muffled <- grepl(pattern, "muffleWarning") [01:28:18.614] if (muffled) [01:28:18.614] invokeRestart("muffleWarning") [01:28:18.614] } [01:28:18.614] else if (inherits(cond, "condition")) { [01:28:18.614] if (!is.null(pattern)) { [01:28:18.614] computeRestarts <- base::computeRestarts [01:28:18.614] grepl <- base::grepl [01:28:18.614] restarts <- computeRestarts(cond) [01:28:18.614] for (restart in restarts) { [01:28:18.614] name <- restart$name [01:28:18.614] if (is.null(name)) [01:28:18.614] next [01:28:18.614] if (!grepl(pattern, name)) [01:28:18.614] next [01:28:18.614] invokeRestart(restart) [01:28:18.614] muffled <- TRUE [01:28:18.614] break [01:28:18.614] } [01:28:18.614] } [01:28:18.614] } [01:28:18.614] invisible(muffled) [01:28:18.614] } [01:28:18.614] muffleCondition(cond) [01:28:18.614] }) [01:28:18.614] })) [01:28:18.614] future::FutureResult(value = ...future.value$value, [01:28:18.614] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.614] ...future.rng), globalenv = if (FALSE) [01:28:18.614] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.614] ...future.globalenv.names)) [01:28:18.614] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.614] }, condition = base::local({ [01:28:18.614] c <- base::c [01:28:18.614] inherits <- base::inherits [01:28:18.614] invokeRestart <- base::invokeRestart [01:28:18.614] length <- base::length [01:28:18.614] list <- base::list [01:28:18.614] seq.int <- base::seq.int [01:28:18.614] signalCondition <- base::signalCondition [01:28:18.614] sys.calls <- base::sys.calls [01:28:18.614] `[[` <- base::`[[` [01:28:18.614] `+` <- base::`+` [01:28:18.614] `<<-` <- base::`<<-` [01:28:18.614] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.614] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.614] 3L)] [01:28:18.614] } [01:28:18.614] function(cond) { [01:28:18.614] is_error <- inherits(cond, "error") [01:28:18.614] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.614] NULL) [01:28:18.614] if (is_error) { [01:28:18.614] sessionInformation <- function() { [01:28:18.614] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.614] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.614] search = base::search(), system = base::Sys.info()) [01:28:18.614] } [01:28:18.614] ...future.conditions[[length(...future.conditions) + [01:28:18.614] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.614] cond$call), session = sessionInformation(), [01:28:18.614] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.614] signalCondition(cond) [01:28:18.614] } [01:28:18.614] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.614] "immediateCondition"))) { [01:28:18.614] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.614] ...future.conditions[[length(...future.conditions) + [01:28:18.614] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.614] if (TRUE && !signal) { [01:28:18.614] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.614] { [01:28:18.614] inherits <- base::inherits [01:28:18.614] invokeRestart <- base::invokeRestart [01:28:18.614] is.null <- base::is.null [01:28:18.614] muffled <- FALSE [01:28:18.614] if (inherits(cond, "message")) { [01:28:18.614] muffled <- grepl(pattern, "muffleMessage") [01:28:18.614] if (muffled) [01:28:18.614] invokeRestart("muffleMessage") [01:28:18.614] } [01:28:18.614] else if (inherits(cond, "warning")) { [01:28:18.614] muffled <- grepl(pattern, "muffleWarning") [01:28:18.614] if (muffled) [01:28:18.614] invokeRestart("muffleWarning") [01:28:18.614] } [01:28:18.614] else if (inherits(cond, "condition")) { [01:28:18.614] if (!is.null(pattern)) { [01:28:18.614] computeRestarts <- base::computeRestarts [01:28:18.614] grepl <- base::grepl [01:28:18.614] restarts <- computeRestarts(cond) [01:28:18.614] for (restart in restarts) { [01:28:18.614] name <- restart$name [01:28:18.614] if (is.null(name)) [01:28:18.614] next [01:28:18.614] if (!grepl(pattern, name)) [01:28:18.614] next [01:28:18.614] invokeRestart(restart) [01:28:18.614] muffled <- TRUE [01:28:18.614] break [01:28:18.614] } [01:28:18.614] } [01:28:18.614] } [01:28:18.614] invisible(muffled) [01:28:18.614] } [01:28:18.614] muffleCondition(cond, pattern = "^muffle") [01:28:18.614] } [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] if (TRUE) { [01:28:18.614] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.614] { [01:28:18.614] inherits <- base::inherits [01:28:18.614] invokeRestart <- base::invokeRestart [01:28:18.614] is.null <- base::is.null [01:28:18.614] muffled <- FALSE [01:28:18.614] if (inherits(cond, "message")) { [01:28:18.614] muffled <- grepl(pattern, "muffleMessage") [01:28:18.614] if (muffled) [01:28:18.614] invokeRestart("muffleMessage") [01:28:18.614] } [01:28:18.614] else if (inherits(cond, "warning")) { [01:28:18.614] muffled <- grepl(pattern, "muffleWarning") [01:28:18.614] if (muffled) [01:28:18.614] invokeRestart("muffleWarning") [01:28:18.614] } [01:28:18.614] else if (inherits(cond, "condition")) { [01:28:18.614] if (!is.null(pattern)) { [01:28:18.614] computeRestarts <- base::computeRestarts [01:28:18.614] grepl <- base::grepl [01:28:18.614] restarts <- computeRestarts(cond) [01:28:18.614] for (restart in restarts) { [01:28:18.614] name <- restart$name [01:28:18.614] if (is.null(name)) [01:28:18.614] next [01:28:18.614] if (!grepl(pattern, name)) [01:28:18.614] next [01:28:18.614] invokeRestart(restart) [01:28:18.614] muffled <- TRUE [01:28:18.614] break [01:28:18.614] } [01:28:18.614] } [01:28:18.614] } [01:28:18.614] invisible(muffled) [01:28:18.614] } [01:28:18.614] muffleCondition(cond, pattern = "^muffle") [01:28:18.614] } [01:28:18.614] } [01:28:18.614] } [01:28:18.614] })) [01:28:18.614] }, error = function(ex) { [01:28:18.614] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.614] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.614] ...future.rng), started = ...future.startTime, [01:28:18.614] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.614] version = "1.8"), class = "FutureResult") [01:28:18.614] }, finally = { [01:28:18.614] if (!identical(...future.workdir, getwd())) [01:28:18.614] setwd(...future.workdir) [01:28:18.614] { [01:28:18.614] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.614] ...future.oldOptions$nwarnings <- NULL [01:28:18.614] } [01:28:18.614] base::options(...future.oldOptions) [01:28:18.614] if (.Platform$OS.type == "windows") { [01:28:18.614] old_names <- names(...future.oldEnvVars) [01:28:18.614] envs <- base::Sys.getenv() [01:28:18.614] names <- names(envs) [01:28:18.614] common <- intersect(names, old_names) [01:28:18.614] added <- setdiff(names, old_names) [01:28:18.614] removed <- setdiff(old_names, names) [01:28:18.614] changed <- common[...future.oldEnvVars[common] != [01:28:18.614] envs[common]] [01:28:18.614] NAMES <- toupper(changed) [01:28:18.614] args <- list() [01:28:18.614] for (kk in seq_along(NAMES)) { [01:28:18.614] name <- changed[[kk]] [01:28:18.614] NAME <- NAMES[[kk]] [01:28:18.614] if (name != NAME && is.element(NAME, old_names)) [01:28:18.614] next [01:28:18.614] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.614] } [01:28:18.614] NAMES <- toupper(added) [01:28:18.614] for (kk in seq_along(NAMES)) { [01:28:18.614] name <- added[[kk]] [01:28:18.614] NAME <- NAMES[[kk]] [01:28:18.614] if (name != NAME && is.element(NAME, old_names)) [01:28:18.614] next [01:28:18.614] args[[name]] <- "" [01:28:18.614] } [01:28:18.614] NAMES <- toupper(removed) [01:28:18.614] for (kk in seq_along(NAMES)) { [01:28:18.614] name <- removed[[kk]] [01:28:18.614] NAME <- NAMES[[kk]] [01:28:18.614] if (name != NAME && is.element(NAME, old_names)) [01:28:18.614] next [01:28:18.614] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.614] } [01:28:18.614] if (length(args) > 0) [01:28:18.614] base::do.call(base::Sys.setenv, args = args) [01:28:18.614] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.614] } [01:28:18.614] { [01:28:18.614] if (base::length(...future.futureOptionsAdded) > [01:28:18.614] 0L) { [01:28:18.614] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.614] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.614] base::options(opts) [01:28:18.614] } [01:28:18.614] { [01:28:18.614] { [01:28:18.614] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.614] NULL [01:28:18.614] } [01:28:18.614] options(future.plan = NULL) [01:28:18.614] if (is.na(NA_character_)) [01:28:18.614] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.614] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.614] future::plan(list(function (..., workers = 2L, [01:28:18.614] envir = parent.frame()) [01:28:18.614] strategy(..., workers = workers, envir = envir)), [01:28:18.614] .cleanup = FALSE, .init = FALSE) [01:28:18.614] } [01:28:18.614] } [01:28:18.614] } [01:28:18.614] }) [01:28:18.614] if (TRUE) { [01:28:18.614] base::sink(type = "output", split = FALSE) [01:28:18.614] if (TRUE) { [01:28:18.614] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.614] } [01:28:18.614] else { [01:28:18.614] ...future.result["stdout"] <- base::list(NULL) [01:28:18.614] } [01:28:18.614] base::close(...future.stdout) [01:28:18.614] ...future.stdout <- NULL [01:28:18.614] } [01:28:18.614] ...future.result$conditions <- ...future.conditions [01:28:18.614] ...future.result$finished <- base::Sys.time() [01:28:18.614] ...future.result [01:28:18.614] } [01:28:18.620] MultisessionFuture started [01:28:18.620] - Launch lazy future ... done [01:28:18.621] run() for 'MultisessionFuture' ... done > stopifnot(inherits(f1, "MultisessionFuture")) > cat(sprintf("Future #1 session: %d\n", f1$node)) Future #1 session: 1 > v1 <- value(f1) [01:28:18.621] result() for ClusterFuture ... [01:28:18.621] receiveMessageFromWorker() for ClusterFuture ... [01:28:18.621] - Validating connection of MultisessionFuture [01:28:18.644] - received message: FutureResult [01:28:18.644] - Received FutureResult [01:28:18.645] - Erased future from FutureRegistry [01:28:18.645] result() for ClusterFuture ... [01:28:18.645] - result already collected: FutureResult [01:28:18.645] result() for ClusterFuture ... done [01:28:18.645] receiveMessageFromWorker() for ClusterFuture ... done [01:28:18.646] result() for ClusterFuture ... done [01:28:18.646] result() for ClusterFuture ... [01:28:18.646] - result already collected: FutureResult [01:28:18.646] result() for ClusterFuture ... done > cat(sprintf("Future #1 R process: %s\n", v1)) Future #1 R process: e8be5f7e-7200-d71b-df57-c58b26cabcdb > stopifnot(v1 != session_uuid) > > message("Creating future #2:") Creating future #2: > f2 <- future({ future:::session_uuid(attributes = TRUE) }) [01:28:18.647] getGlobalsAndPackages() ... [01:28:18.647] Searching for globals... [01:28:18.648] - globals found: [2] '{', ':::' [01:28:18.648] Searching for globals ... DONE [01:28:18.649] Resolving globals: FALSE [01:28:18.649] [01:28:18.649] [01:28:18.650] getGlobalsAndPackages() ... DONE [01:28:18.650] run() for 'Future' ... [01:28:18.650] - state: 'created' [01:28:18.650] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.663] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.664] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.664] - Field: 'node' [01:28:18.664] - Field: 'label' [01:28:18.664] - Field: 'local' [01:28:18.664] - Field: 'owner' [01:28:18.665] - Field: 'envir' [01:28:18.665] - Field: 'workers' [01:28:18.665] - Field: 'packages' [01:28:18.665] - Field: 'gc' [01:28:18.665] - Field: 'conditions' [01:28:18.666] - Field: 'persistent' [01:28:18.666] - Field: 'expr' [01:28:18.666] - Field: 'uuid' [01:28:18.666] - Field: 'seed' [01:28:18.666] - Field: 'version' [01:28:18.667] - Field: 'result' [01:28:18.667] - Field: 'asynchronous' [01:28:18.667] - Field: 'calls' [01:28:18.667] - Field: 'globals' [01:28:18.667] - Field: 'stdout' [01:28:18.668] - Field: 'earlySignal' [01:28:18.668] - Field: 'lazy' [01:28:18.668] - Field: 'state' [01:28:18.668] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.668] - Launch lazy future ... [01:28:18.669] Packages needed by the future expression (n = 0): [01:28:18.669] Packages needed by future strategies (n = 0): [01:28:18.670] { [01:28:18.670] { [01:28:18.670] { [01:28:18.670] ...future.startTime <- base::Sys.time() [01:28:18.670] { [01:28:18.670] { [01:28:18.670] { [01:28:18.670] { [01:28:18.670] base::local({ [01:28:18.670] has_future <- base::requireNamespace("future", [01:28:18.670] quietly = TRUE) [01:28:18.670] if (has_future) { [01:28:18.670] ns <- base::getNamespace("future") [01:28:18.670] version <- ns[[".package"]][["version"]] [01:28:18.670] if (is.null(version)) [01:28:18.670] version <- utils::packageVersion("future") [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] version <- NULL [01:28:18.670] } [01:28:18.670] if (!has_future || version < "1.8.0") { [01:28:18.670] info <- base::c(r_version = base::gsub("R version ", [01:28:18.670] "", base::R.version$version.string), [01:28:18.670] platform = base::sprintf("%s (%s-bit)", [01:28:18.670] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.670] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.670] "release", "version")], collapse = " "), [01:28:18.670] hostname = base::Sys.info()[["nodename"]]) [01:28:18.670] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.670] info) [01:28:18.670] info <- base::paste(info, collapse = "; ") [01:28:18.670] if (!has_future) { [01:28:18.670] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.670] info) [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.670] info, version) [01:28:18.670] } [01:28:18.670] base::stop(msg) [01:28:18.670] } [01:28:18.670] }) [01:28:18.670] } [01:28:18.670] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.670] base::options(mc.cores = 1L) [01:28:18.670] } [01:28:18.670] options(future.plan = NULL) [01:28:18.670] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.670] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.670] } [01:28:18.670] ...future.workdir <- getwd() [01:28:18.670] } [01:28:18.670] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.670] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.670] } [01:28:18.670] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.670] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.670] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.670] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.670] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.670] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.670] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.670] base::names(...future.oldOptions)) [01:28:18.670] } [01:28:18.670] if (FALSE) { [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] if (TRUE) { [01:28:18.670] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.670] open = "w") [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.670] windows = "NUL", "/dev/null"), open = "w") [01:28:18.670] } [01:28:18.670] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.670] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.670] base::sink(type = "output", split = FALSE) [01:28:18.670] base::close(...future.stdout) [01:28:18.670] }, add = TRUE) [01:28:18.670] } [01:28:18.670] ...future.frame <- base::sys.nframe() [01:28:18.670] ...future.conditions <- base::list() [01:28:18.670] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.670] if (FALSE) { [01:28:18.670] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.670] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.670] } [01:28:18.670] ...future.result <- base::tryCatch({ [01:28:18.670] base::withCallingHandlers({ [01:28:18.670] ...future.value <- base::withVisible(base::local({ [01:28:18.670] ...future.makeSendCondition <- base::local({ [01:28:18.670] sendCondition <- NULL [01:28:18.670] function(frame = 1L) { [01:28:18.670] if (is.function(sendCondition)) [01:28:18.670] return(sendCondition) [01:28:18.670] ns <- getNamespace("parallel") [01:28:18.670] if (exists("sendData", mode = "function", [01:28:18.670] envir = ns)) { [01:28:18.670] parallel_sendData <- get("sendData", mode = "function", [01:28:18.670] envir = ns) [01:28:18.670] envir <- sys.frame(frame) [01:28:18.670] master <- NULL [01:28:18.670] while (!identical(envir, .GlobalEnv) && [01:28:18.670] !identical(envir, emptyenv())) { [01:28:18.670] if (exists("master", mode = "list", envir = envir, [01:28:18.670] inherits = FALSE)) { [01:28:18.670] master <- get("master", mode = "list", [01:28:18.670] envir = envir, inherits = FALSE) [01:28:18.670] if (inherits(master, c("SOCKnode", [01:28:18.670] "SOCK0node"))) { [01:28:18.670] sendCondition <<- function(cond) { [01:28:18.670] data <- list(type = "VALUE", value = cond, [01:28:18.670] success = TRUE) [01:28:18.670] parallel_sendData(master, data) [01:28:18.670] } [01:28:18.670] return(sendCondition) [01:28:18.670] } [01:28:18.670] } [01:28:18.670] frame <- frame + 1L [01:28:18.670] envir <- sys.frame(frame) [01:28:18.670] } [01:28:18.670] } [01:28:18.670] sendCondition <<- function(cond) NULL [01:28:18.670] } [01:28:18.670] }) [01:28:18.670] withCallingHandlers({ [01:28:18.670] { [01:28:18.670] future:::session_uuid(attributes = TRUE) [01:28:18.670] } [01:28:18.670] }, immediateCondition = function(cond) { [01:28:18.670] sendCondition <- ...future.makeSendCondition() [01:28:18.670] sendCondition(cond) [01:28:18.670] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.670] { [01:28:18.670] inherits <- base::inherits [01:28:18.670] invokeRestart <- base::invokeRestart [01:28:18.670] is.null <- base::is.null [01:28:18.670] muffled <- FALSE [01:28:18.670] if (inherits(cond, "message")) { [01:28:18.670] muffled <- grepl(pattern, "muffleMessage") [01:28:18.670] if (muffled) [01:28:18.670] invokeRestart("muffleMessage") [01:28:18.670] } [01:28:18.670] else if (inherits(cond, "warning")) { [01:28:18.670] muffled <- grepl(pattern, "muffleWarning") [01:28:18.670] if (muffled) [01:28:18.670] invokeRestart("muffleWarning") [01:28:18.670] } [01:28:18.670] else if (inherits(cond, "condition")) { [01:28:18.670] if (!is.null(pattern)) { [01:28:18.670] computeRestarts <- base::computeRestarts [01:28:18.670] grepl <- base::grepl [01:28:18.670] restarts <- computeRestarts(cond) [01:28:18.670] for (restart in restarts) { [01:28:18.670] name <- restart$name [01:28:18.670] if (is.null(name)) [01:28:18.670] next [01:28:18.670] if (!grepl(pattern, name)) [01:28:18.670] next [01:28:18.670] invokeRestart(restart) [01:28:18.670] muffled <- TRUE [01:28:18.670] break [01:28:18.670] } [01:28:18.670] } [01:28:18.670] } [01:28:18.670] invisible(muffled) [01:28:18.670] } [01:28:18.670] muffleCondition(cond) [01:28:18.670] }) [01:28:18.670] })) [01:28:18.670] future::FutureResult(value = ...future.value$value, [01:28:18.670] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.670] ...future.rng), globalenv = if (FALSE) [01:28:18.670] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.670] ...future.globalenv.names)) [01:28:18.670] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.670] }, condition = base::local({ [01:28:18.670] c <- base::c [01:28:18.670] inherits <- base::inherits [01:28:18.670] invokeRestart <- base::invokeRestart [01:28:18.670] length <- base::length [01:28:18.670] list <- base::list [01:28:18.670] seq.int <- base::seq.int [01:28:18.670] signalCondition <- base::signalCondition [01:28:18.670] sys.calls <- base::sys.calls [01:28:18.670] `[[` <- base::`[[` [01:28:18.670] `+` <- base::`+` [01:28:18.670] `<<-` <- base::`<<-` [01:28:18.670] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.670] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.670] 3L)] [01:28:18.670] } [01:28:18.670] function(cond) { [01:28:18.670] is_error <- inherits(cond, "error") [01:28:18.670] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.670] NULL) [01:28:18.670] if (is_error) { [01:28:18.670] sessionInformation <- function() { [01:28:18.670] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.670] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.670] search = base::search(), system = base::Sys.info()) [01:28:18.670] } [01:28:18.670] ...future.conditions[[length(...future.conditions) + [01:28:18.670] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.670] cond$call), session = sessionInformation(), [01:28:18.670] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.670] signalCondition(cond) [01:28:18.670] } [01:28:18.670] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.670] "immediateCondition"))) { [01:28:18.670] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.670] ...future.conditions[[length(...future.conditions) + [01:28:18.670] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.670] if (TRUE && !signal) { [01:28:18.670] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.670] { [01:28:18.670] inherits <- base::inherits [01:28:18.670] invokeRestart <- base::invokeRestart [01:28:18.670] is.null <- base::is.null [01:28:18.670] muffled <- FALSE [01:28:18.670] if (inherits(cond, "message")) { [01:28:18.670] muffled <- grepl(pattern, "muffleMessage") [01:28:18.670] if (muffled) [01:28:18.670] invokeRestart("muffleMessage") [01:28:18.670] } [01:28:18.670] else if (inherits(cond, "warning")) { [01:28:18.670] muffled <- grepl(pattern, "muffleWarning") [01:28:18.670] if (muffled) [01:28:18.670] invokeRestart("muffleWarning") [01:28:18.670] } [01:28:18.670] else if (inherits(cond, "condition")) { [01:28:18.670] if (!is.null(pattern)) { [01:28:18.670] computeRestarts <- base::computeRestarts [01:28:18.670] grepl <- base::grepl [01:28:18.670] restarts <- computeRestarts(cond) [01:28:18.670] for (restart in restarts) { [01:28:18.670] name <- restart$name [01:28:18.670] if (is.null(name)) [01:28:18.670] next [01:28:18.670] if (!grepl(pattern, name)) [01:28:18.670] next [01:28:18.670] invokeRestart(restart) [01:28:18.670] muffled <- TRUE [01:28:18.670] break [01:28:18.670] } [01:28:18.670] } [01:28:18.670] } [01:28:18.670] invisible(muffled) [01:28:18.670] } [01:28:18.670] muffleCondition(cond, pattern = "^muffle") [01:28:18.670] } [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] if (TRUE) { [01:28:18.670] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.670] { [01:28:18.670] inherits <- base::inherits [01:28:18.670] invokeRestart <- base::invokeRestart [01:28:18.670] is.null <- base::is.null [01:28:18.670] muffled <- FALSE [01:28:18.670] if (inherits(cond, "message")) { [01:28:18.670] muffled <- grepl(pattern, "muffleMessage") [01:28:18.670] if (muffled) [01:28:18.670] invokeRestart("muffleMessage") [01:28:18.670] } [01:28:18.670] else if (inherits(cond, "warning")) { [01:28:18.670] muffled <- grepl(pattern, "muffleWarning") [01:28:18.670] if (muffled) [01:28:18.670] invokeRestart("muffleWarning") [01:28:18.670] } [01:28:18.670] else if (inherits(cond, "condition")) { [01:28:18.670] if (!is.null(pattern)) { [01:28:18.670] computeRestarts <- base::computeRestarts [01:28:18.670] grepl <- base::grepl [01:28:18.670] restarts <- computeRestarts(cond) [01:28:18.670] for (restart in restarts) { [01:28:18.670] name <- restart$name [01:28:18.670] if (is.null(name)) [01:28:18.670] next [01:28:18.670] if (!grepl(pattern, name)) [01:28:18.670] next [01:28:18.670] invokeRestart(restart) [01:28:18.670] muffled <- TRUE [01:28:18.670] break [01:28:18.670] } [01:28:18.670] } [01:28:18.670] } [01:28:18.670] invisible(muffled) [01:28:18.670] } [01:28:18.670] muffleCondition(cond, pattern = "^muffle") [01:28:18.670] } [01:28:18.670] } [01:28:18.670] } [01:28:18.670] })) [01:28:18.670] }, error = function(ex) { [01:28:18.670] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.670] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.670] ...future.rng), started = ...future.startTime, [01:28:18.670] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.670] version = "1.8"), class = "FutureResult") [01:28:18.670] }, finally = { [01:28:18.670] if (!identical(...future.workdir, getwd())) [01:28:18.670] setwd(...future.workdir) [01:28:18.670] { [01:28:18.670] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.670] ...future.oldOptions$nwarnings <- NULL [01:28:18.670] } [01:28:18.670] base::options(...future.oldOptions) [01:28:18.670] if (.Platform$OS.type == "windows") { [01:28:18.670] old_names <- names(...future.oldEnvVars) [01:28:18.670] envs <- base::Sys.getenv() [01:28:18.670] names <- names(envs) [01:28:18.670] common <- intersect(names, old_names) [01:28:18.670] added <- setdiff(names, old_names) [01:28:18.670] removed <- setdiff(old_names, names) [01:28:18.670] changed <- common[...future.oldEnvVars[common] != [01:28:18.670] envs[common]] [01:28:18.670] NAMES <- toupper(changed) [01:28:18.670] args <- list() [01:28:18.670] for (kk in seq_along(NAMES)) { [01:28:18.670] name <- changed[[kk]] [01:28:18.670] NAME <- NAMES[[kk]] [01:28:18.670] if (name != NAME && is.element(NAME, old_names)) [01:28:18.670] next [01:28:18.670] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.670] } [01:28:18.670] NAMES <- toupper(added) [01:28:18.670] for (kk in seq_along(NAMES)) { [01:28:18.670] name <- added[[kk]] [01:28:18.670] NAME <- NAMES[[kk]] [01:28:18.670] if (name != NAME && is.element(NAME, old_names)) [01:28:18.670] next [01:28:18.670] args[[name]] <- "" [01:28:18.670] } [01:28:18.670] NAMES <- toupper(removed) [01:28:18.670] for (kk in seq_along(NAMES)) { [01:28:18.670] name <- removed[[kk]] [01:28:18.670] NAME <- NAMES[[kk]] [01:28:18.670] if (name != NAME && is.element(NAME, old_names)) [01:28:18.670] next [01:28:18.670] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.670] } [01:28:18.670] if (length(args) > 0) [01:28:18.670] base::do.call(base::Sys.setenv, args = args) [01:28:18.670] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.670] } [01:28:18.670] { [01:28:18.670] if (base::length(...future.futureOptionsAdded) > [01:28:18.670] 0L) { [01:28:18.670] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.670] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.670] base::options(opts) [01:28:18.670] } [01:28:18.670] { [01:28:18.670] { [01:28:18.670] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.670] NULL [01:28:18.670] } [01:28:18.670] options(future.plan = NULL) [01:28:18.670] if (is.na(NA_character_)) [01:28:18.670] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.670] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.670] future::plan(list(function (..., workers = 2L, [01:28:18.670] envir = parent.frame()) [01:28:18.670] strategy(..., workers = workers, envir = envir)), [01:28:18.670] .cleanup = FALSE, .init = FALSE) [01:28:18.670] } [01:28:18.670] } [01:28:18.670] } [01:28:18.670] }) [01:28:18.670] if (TRUE) { [01:28:18.670] base::sink(type = "output", split = FALSE) [01:28:18.670] if (TRUE) { [01:28:18.670] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.670] } [01:28:18.670] else { [01:28:18.670] ...future.result["stdout"] <- base::list(NULL) [01:28:18.670] } [01:28:18.670] base::close(...future.stdout) [01:28:18.670] ...future.stdout <- NULL [01:28:18.670] } [01:28:18.670] ...future.result$conditions <- ...future.conditions [01:28:18.670] ...future.result$finished <- base::Sys.time() [01:28:18.670] ...future.result [01:28:18.670] } [01:28:18.679] MultisessionFuture started [01:28:18.679] - Launch lazy future ... done [01:28:18.679] run() for 'MultisessionFuture' ... done > stopifnot(inherits(f2, "MultisessionFuture")) > cat(sprintf("Future #2 session: %d\n", f2$node)) Future #2 session: 1 > v2 <- value(f2) [01:28:18.679] result() for ClusterFuture ... [01:28:18.679] receiveMessageFromWorker() for ClusterFuture ... [01:28:18.680] - Validating connection of MultisessionFuture [01:28:18.693] - received message: FutureResult [01:28:18.693] - Received FutureResult [01:28:18.693] - Erased future from FutureRegistry [01:28:18.693] result() for ClusterFuture ... [01:28:18.693] - result already collected: FutureResult [01:28:18.693] result() for ClusterFuture ... done [01:28:18.694] receiveMessageFromWorker() for ClusterFuture ... done [01:28:18.694] result() for ClusterFuture ... done [01:28:18.694] result() for ClusterFuture ... [01:28:18.694] - result already collected: FutureResult [01:28:18.694] result() for ClusterFuture ... done > cat(sprintf("Future #2 R process: %s\n", v2)) Future #2 R process: e8be5f7e-7200-d71b-df57-c58b26cabcdb > stopifnot(v2 != session_uuid) > > message("Creating future #3:") Creating future #3: > f3 <- future({ f1$owner }) [01:28:18.695] getGlobalsAndPackages() ... [01:28:18.695] Searching for globals... [01:28:18.696] - globals found: [3] '{', '$', 'f1' [01:28:18.696] Searching for globals ... DONE [01:28:18.696] Resolving globals: FALSE [01:28:18.700] The total size of the 1 globals is 1.58 MiB (1653440 bytes) [01:28:18.700] The total size of the 1 globals exported for future expression ('{; f1$owner; }') is 1.58 MiB.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'f1' (1.58 MiB of class 'environment') [01:28:18.701] - globals: [1] 'f1' [01:28:18.701] [01:28:18.701] getGlobalsAndPackages() ... DONE [01:28:18.701] run() for 'Future' ... [01:28:18.701] - state: 'created' [01:28:18.702] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.714] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.714] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.714] - Field: 'node' [01:28:18.714] - Field: 'label' [01:28:18.715] - Field: 'local' [01:28:18.715] - Field: 'owner' [01:28:18.715] - Field: 'envir' [01:28:18.715] - Field: 'workers' [01:28:18.715] - Field: 'packages' [01:28:18.716] - Field: 'gc' [01:28:18.716] - Field: 'conditions' [01:28:18.716] - Field: 'persistent' [01:28:18.716] - Field: 'expr' [01:28:18.716] - Field: 'uuid' [01:28:18.716] - Field: 'seed' [01:28:18.717] - Field: 'version' [01:28:18.717] - Field: 'result' [01:28:18.717] - Field: 'asynchronous' [01:28:18.717] - Field: 'calls' [01:28:18.717] - Field: 'globals' [01:28:18.717] - Field: 'stdout' [01:28:18.718] - Field: 'earlySignal' [01:28:18.718] - Field: 'lazy' [01:28:18.718] - Field: 'state' [01:28:18.718] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.718] - Launch lazy future ... [01:28:18.719] Packages needed by the future expression (n = 0): [01:28:18.719] Packages needed by future strategies (n = 0): [01:28:18.719] { [01:28:18.719] { [01:28:18.719] { [01:28:18.719] ...future.startTime <- base::Sys.time() [01:28:18.719] { [01:28:18.719] { [01:28:18.719] { [01:28:18.719] { [01:28:18.719] base::local({ [01:28:18.719] has_future <- base::requireNamespace("future", [01:28:18.719] quietly = TRUE) [01:28:18.719] if (has_future) { [01:28:18.719] ns <- base::getNamespace("future") [01:28:18.719] version <- ns[[".package"]][["version"]] [01:28:18.719] if (is.null(version)) [01:28:18.719] version <- utils::packageVersion("future") [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] version <- NULL [01:28:18.719] } [01:28:18.719] if (!has_future || version < "1.8.0") { [01:28:18.719] info <- base::c(r_version = base::gsub("R version ", [01:28:18.719] "", base::R.version$version.string), [01:28:18.719] platform = base::sprintf("%s (%s-bit)", [01:28:18.719] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.719] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.719] "release", "version")], collapse = " "), [01:28:18.719] hostname = base::Sys.info()[["nodename"]]) [01:28:18.719] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.719] info) [01:28:18.719] info <- base::paste(info, collapse = "; ") [01:28:18.719] if (!has_future) { [01:28:18.719] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.719] info) [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.719] info, version) [01:28:18.719] } [01:28:18.719] base::stop(msg) [01:28:18.719] } [01:28:18.719] }) [01:28:18.719] } [01:28:18.719] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.719] base::options(mc.cores = 1L) [01:28:18.719] } [01:28:18.719] options(future.plan = NULL) [01:28:18.719] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.719] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.719] } [01:28:18.719] ...future.workdir <- getwd() [01:28:18.719] } [01:28:18.719] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.719] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.719] } [01:28:18.719] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.719] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.719] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.719] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.719] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.719] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.719] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.719] base::names(...future.oldOptions)) [01:28:18.719] } [01:28:18.719] if (FALSE) { [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] if (TRUE) { [01:28:18.719] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.719] open = "w") [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.719] windows = "NUL", "/dev/null"), open = "w") [01:28:18.719] } [01:28:18.719] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.719] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.719] base::sink(type = "output", split = FALSE) [01:28:18.719] base::close(...future.stdout) [01:28:18.719] }, add = TRUE) [01:28:18.719] } [01:28:18.719] ...future.frame <- base::sys.nframe() [01:28:18.719] ...future.conditions <- base::list() [01:28:18.719] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.719] if (FALSE) { [01:28:18.719] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.719] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.719] } [01:28:18.719] ...future.result <- base::tryCatch({ [01:28:18.719] base::withCallingHandlers({ [01:28:18.719] ...future.value <- base::withVisible(base::local({ [01:28:18.719] ...future.makeSendCondition <- base::local({ [01:28:18.719] sendCondition <- NULL [01:28:18.719] function(frame = 1L) { [01:28:18.719] if (is.function(sendCondition)) [01:28:18.719] return(sendCondition) [01:28:18.719] ns <- getNamespace("parallel") [01:28:18.719] if (exists("sendData", mode = "function", [01:28:18.719] envir = ns)) { [01:28:18.719] parallel_sendData <- get("sendData", mode = "function", [01:28:18.719] envir = ns) [01:28:18.719] envir <- sys.frame(frame) [01:28:18.719] master <- NULL [01:28:18.719] while (!identical(envir, .GlobalEnv) && [01:28:18.719] !identical(envir, emptyenv())) { [01:28:18.719] if (exists("master", mode = "list", envir = envir, [01:28:18.719] inherits = FALSE)) { [01:28:18.719] master <- get("master", mode = "list", [01:28:18.719] envir = envir, inherits = FALSE) [01:28:18.719] if (inherits(master, c("SOCKnode", [01:28:18.719] "SOCK0node"))) { [01:28:18.719] sendCondition <<- function(cond) { [01:28:18.719] data <- list(type = "VALUE", value = cond, [01:28:18.719] success = TRUE) [01:28:18.719] parallel_sendData(master, data) [01:28:18.719] } [01:28:18.719] return(sendCondition) [01:28:18.719] } [01:28:18.719] } [01:28:18.719] frame <- frame + 1L [01:28:18.719] envir <- sys.frame(frame) [01:28:18.719] } [01:28:18.719] } [01:28:18.719] sendCondition <<- function(cond) NULL [01:28:18.719] } [01:28:18.719] }) [01:28:18.719] withCallingHandlers({ [01:28:18.719] { [01:28:18.719] f1$owner [01:28:18.719] } [01:28:18.719] }, immediateCondition = function(cond) { [01:28:18.719] sendCondition <- ...future.makeSendCondition() [01:28:18.719] sendCondition(cond) [01:28:18.719] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.719] { [01:28:18.719] inherits <- base::inherits [01:28:18.719] invokeRestart <- base::invokeRestart [01:28:18.719] is.null <- base::is.null [01:28:18.719] muffled <- FALSE [01:28:18.719] if (inherits(cond, "message")) { [01:28:18.719] muffled <- grepl(pattern, "muffleMessage") [01:28:18.719] if (muffled) [01:28:18.719] invokeRestart("muffleMessage") [01:28:18.719] } [01:28:18.719] else if (inherits(cond, "warning")) { [01:28:18.719] muffled <- grepl(pattern, "muffleWarning") [01:28:18.719] if (muffled) [01:28:18.719] invokeRestart("muffleWarning") [01:28:18.719] } [01:28:18.719] else if (inherits(cond, "condition")) { [01:28:18.719] if (!is.null(pattern)) { [01:28:18.719] computeRestarts <- base::computeRestarts [01:28:18.719] grepl <- base::grepl [01:28:18.719] restarts <- computeRestarts(cond) [01:28:18.719] for (restart in restarts) { [01:28:18.719] name <- restart$name [01:28:18.719] if (is.null(name)) [01:28:18.719] next [01:28:18.719] if (!grepl(pattern, name)) [01:28:18.719] next [01:28:18.719] invokeRestart(restart) [01:28:18.719] muffled <- TRUE [01:28:18.719] break [01:28:18.719] } [01:28:18.719] } [01:28:18.719] } [01:28:18.719] invisible(muffled) [01:28:18.719] } [01:28:18.719] muffleCondition(cond) [01:28:18.719] }) [01:28:18.719] })) [01:28:18.719] future::FutureResult(value = ...future.value$value, [01:28:18.719] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.719] ...future.rng), globalenv = if (FALSE) [01:28:18.719] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.719] ...future.globalenv.names)) [01:28:18.719] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.719] }, condition = base::local({ [01:28:18.719] c <- base::c [01:28:18.719] inherits <- base::inherits [01:28:18.719] invokeRestart <- base::invokeRestart [01:28:18.719] length <- base::length [01:28:18.719] list <- base::list [01:28:18.719] seq.int <- base::seq.int [01:28:18.719] signalCondition <- base::signalCondition [01:28:18.719] sys.calls <- base::sys.calls [01:28:18.719] `[[` <- base::`[[` [01:28:18.719] `+` <- base::`+` [01:28:18.719] `<<-` <- base::`<<-` [01:28:18.719] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.719] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.719] 3L)] [01:28:18.719] } [01:28:18.719] function(cond) { [01:28:18.719] is_error <- inherits(cond, "error") [01:28:18.719] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.719] NULL) [01:28:18.719] if (is_error) { [01:28:18.719] sessionInformation <- function() { [01:28:18.719] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.719] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.719] search = base::search(), system = base::Sys.info()) [01:28:18.719] } [01:28:18.719] ...future.conditions[[length(...future.conditions) + [01:28:18.719] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.719] cond$call), session = sessionInformation(), [01:28:18.719] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.719] signalCondition(cond) [01:28:18.719] } [01:28:18.719] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.719] "immediateCondition"))) { [01:28:18.719] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.719] ...future.conditions[[length(...future.conditions) + [01:28:18.719] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.719] if (TRUE && !signal) { [01:28:18.719] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.719] { [01:28:18.719] inherits <- base::inherits [01:28:18.719] invokeRestart <- base::invokeRestart [01:28:18.719] is.null <- base::is.null [01:28:18.719] muffled <- FALSE [01:28:18.719] if (inherits(cond, "message")) { [01:28:18.719] muffled <- grepl(pattern, "muffleMessage") [01:28:18.719] if (muffled) [01:28:18.719] invokeRestart("muffleMessage") [01:28:18.719] } [01:28:18.719] else if (inherits(cond, "warning")) { [01:28:18.719] muffled <- grepl(pattern, "muffleWarning") [01:28:18.719] if (muffled) [01:28:18.719] invokeRestart("muffleWarning") [01:28:18.719] } [01:28:18.719] else if (inherits(cond, "condition")) { [01:28:18.719] if (!is.null(pattern)) { [01:28:18.719] computeRestarts <- base::computeRestarts [01:28:18.719] grepl <- base::grepl [01:28:18.719] restarts <- computeRestarts(cond) [01:28:18.719] for (restart in restarts) { [01:28:18.719] name <- restart$name [01:28:18.719] if (is.null(name)) [01:28:18.719] next [01:28:18.719] if (!grepl(pattern, name)) [01:28:18.719] next [01:28:18.719] invokeRestart(restart) [01:28:18.719] muffled <- TRUE [01:28:18.719] break [01:28:18.719] } [01:28:18.719] } [01:28:18.719] } [01:28:18.719] invisible(muffled) [01:28:18.719] } [01:28:18.719] muffleCondition(cond, pattern = "^muffle") [01:28:18.719] } [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] if (TRUE) { [01:28:18.719] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.719] { [01:28:18.719] inherits <- base::inherits [01:28:18.719] invokeRestart <- base::invokeRestart [01:28:18.719] is.null <- base::is.null [01:28:18.719] muffled <- FALSE [01:28:18.719] if (inherits(cond, "message")) { [01:28:18.719] muffled <- grepl(pattern, "muffleMessage") [01:28:18.719] if (muffled) [01:28:18.719] invokeRestart("muffleMessage") [01:28:18.719] } [01:28:18.719] else if (inherits(cond, "warning")) { [01:28:18.719] muffled <- grepl(pattern, "muffleWarning") [01:28:18.719] if (muffled) [01:28:18.719] invokeRestart("muffleWarning") [01:28:18.719] } [01:28:18.719] else if (inherits(cond, "condition")) { [01:28:18.719] if (!is.null(pattern)) { [01:28:18.719] computeRestarts <- base::computeRestarts [01:28:18.719] grepl <- base::grepl [01:28:18.719] restarts <- computeRestarts(cond) [01:28:18.719] for (restart in restarts) { [01:28:18.719] name <- restart$name [01:28:18.719] if (is.null(name)) [01:28:18.719] next [01:28:18.719] if (!grepl(pattern, name)) [01:28:18.719] next [01:28:18.719] invokeRestart(restart) [01:28:18.719] muffled <- TRUE [01:28:18.719] break [01:28:18.719] } [01:28:18.719] } [01:28:18.719] } [01:28:18.719] invisible(muffled) [01:28:18.719] } [01:28:18.719] muffleCondition(cond, pattern = "^muffle") [01:28:18.719] } [01:28:18.719] } [01:28:18.719] } [01:28:18.719] })) [01:28:18.719] }, error = function(ex) { [01:28:18.719] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.719] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.719] ...future.rng), started = ...future.startTime, [01:28:18.719] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.719] version = "1.8"), class = "FutureResult") [01:28:18.719] }, finally = { [01:28:18.719] if (!identical(...future.workdir, getwd())) [01:28:18.719] setwd(...future.workdir) [01:28:18.719] { [01:28:18.719] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.719] ...future.oldOptions$nwarnings <- NULL [01:28:18.719] } [01:28:18.719] base::options(...future.oldOptions) [01:28:18.719] if (.Platform$OS.type == "windows") { [01:28:18.719] old_names <- names(...future.oldEnvVars) [01:28:18.719] envs <- base::Sys.getenv() [01:28:18.719] names <- names(envs) [01:28:18.719] common <- intersect(names, old_names) [01:28:18.719] added <- setdiff(names, old_names) [01:28:18.719] removed <- setdiff(old_names, names) [01:28:18.719] changed <- common[...future.oldEnvVars[common] != [01:28:18.719] envs[common]] [01:28:18.719] NAMES <- toupper(changed) [01:28:18.719] args <- list() [01:28:18.719] for (kk in seq_along(NAMES)) { [01:28:18.719] name <- changed[[kk]] [01:28:18.719] NAME <- NAMES[[kk]] [01:28:18.719] if (name != NAME && is.element(NAME, old_names)) [01:28:18.719] next [01:28:18.719] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.719] } [01:28:18.719] NAMES <- toupper(added) [01:28:18.719] for (kk in seq_along(NAMES)) { [01:28:18.719] name <- added[[kk]] [01:28:18.719] NAME <- NAMES[[kk]] [01:28:18.719] if (name != NAME && is.element(NAME, old_names)) [01:28:18.719] next [01:28:18.719] args[[name]] <- "" [01:28:18.719] } [01:28:18.719] NAMES <- toupper(removed) [01:28:18.719] for (kk in seq_along(NAMES)) { [01:28:18.719] name <- removed[[kk]] [01:28:18.719] NAME <- NAMES[[kk]] [01:28:18.719] if (name != NAME && is.element(NAME, old_names)) [01:28:18.719] next [01:28:18.719] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.719] } [01:28:18.719] if (length(args) > 0) [01:28:18.719] base::do.call(base::Sys.setenv, args = args) [01:28:18.719] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.719] } [01:28:18.719] { [01:28:18.719] if (base::length(...future.futureOptionsAdded) > [01:28:18.719] 0L) { [01:28:18.719] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.719] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.719] base::options(opts) [01:28:18.719] } [01:28:18.719] { [01:28:18.719] { [01:28:18.719] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.719] NULL [01:28:18.719] } [01:28:18.719] options(future.plan = NULL) [01:28:18.719] if (is.na(NA_character_)) [01:28:18.719] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.719] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.719] future::plan(list(function (..., workers = 2L, [01:28:18.719] envir = parent.frame()) [01:28:18.719] strategy(..., workers = workers, envir = envir)), [01:28:18.719] .cleanup = FALSE, .init = FALSE) [01:28:18.719] } [01:28:18.719] } [01:28:18.719] } [01:28:18.719] }) [01:28:18.719] if (TRUE) { [01:28:18.719] base::sink(type = "output", split = FALSE) [01:28:18.719] if (TRUE) { [01:28:18.719] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.719] } [01:28:18.719] else { [01:28:18.719] ...future.result["stdout"] <- base::list(NULL) [01:28:18.719] } [01:28:18.719] base::close(...future.stdout) [01:28:18.719] ...future.stdout <- NULL [01:28:18.719] } [01:28:18.719] ...future.result$conditions <- ...future.conditions [01:28:18.719] ...future.result$finished <- base::Sys.time() [01:28:18.719] ...future.result [01:28:18.719] } [01:28:18.724] Exporting 1 global objects (1.58 MiB) to cluster node #1 ... [01:28:18.727] Exporting 'f1' (1.58 MiB) to cluster node #1 ... [01:28:18.738] Exporting 'f1' (1.58 MiB) to cluster node #1 ... DONE [01:28:18.738] Exporting 1 global objects (1.58 MiB) to cluster node #1 ... DONE [01:28:18.739] MultisessionFuture started [01:28:18.739] - Launch lazy future ... done [01:28:18.739] run() for 'MultisessionFuture' ... done > stopifnot(inherits(f3, "MultisessionFuture")) > cat(sprintf("Future #3 session: %d\n", f3$node)) Future #3 session: 1 > v3 <- value(f3) [01:28:18.739] result() for ClusterFuture ... [01:28:18.740] receiveMessageFromWorker() for ClusterFuture ... [01:28:18.740] - Validating connection of MultisessionFuture [01:28:18.754] - received message: FutureResult [01:28:18.754] - Received FutureResult [01:28:18.755] - Erased future from FutureRegistry [01:28:18.755] result() for ClusterFuture ... [01:28:18.755] - result already collected: FutureResult [01:28:18.755] result() for ClusterFuture ... done [01:28:18.755] receiveMessageFromWorker() for ClusterFuture ... done [01:28:18.755] result() for ClusterFuture ... done [01:28:18.756] result() for ClusterFuture ... [01:28:18.756] - result already collected: FutureResult [01:28:18.756] result() for ClusterFuture ... done > cat(sprintf("Future #3 owner: %s\n", v3)) Future #3 owner: e2c891c4-cab0-ea03-2a69-bb67514aebf9 > stopifnot(v3 == session_uuid) > > message("Creating future #4:") Creating future #4: > f4 <- future({ f1$owner }) [01:28:18.756] getGlobalsAndPackages() ... [01:28:18.757] Searching for globals... [01:28:18.758] - globals found: [3] '{', '$', 'f1' [01:28:18.758] Searching for globals ... DONE [01:28:18.758] Resolving globals: FALSE [01:28:18.761] The total size of the 1 globals is 1.58 MiB (1656256 bytes) [01:28:18.761] The total size of the 1 globals exported for future expression ('{; f1$owner; }') is 1.58 MiB.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'f1' (1.58 MiB of class 'environment') [01:28:18.761] - globals: [1] 'f1' [01:28:18.761] [01:28:18.762] getGlobalsAndPackages() ... DONE [01:28:18.762] run() for 'Future' ... [01:28:18.762] - state: 'created' [01:28:18.762] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.775] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.775] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.776] - Field: 'node' [01:28:18.776] - Field: 'label' [01:28:18.776] - Field: 'local' [01:28:18.776] - Field: 'owner' [01:28:18.776] - Field: 'envir' [01:28:18.777] - Field: 'workers' [01:28:18.777] - Field: 'packages' [01:28:18.777] - Field: 'gc' [01:28:18.777] - Field: 'conditions' [01:28:18.777] - Field: 'persistent' [01:28:18.778] - Field: 'expr' [01:28:18.778] - Field: 'uuid' [01:28:18.778] - Field: 'seed' [01:28:18.778] - Field: 'version' [01:28:18.778] - Field: 'result' [01:28:18.778] - Field: 'asynchronous' [01:28:18.779] - Field: 'calls' [01:28:18.779] - Field: 'globals' [01:28:18.779] - Field: 'stdout' [01:28:18.779] - Field: 'earlySignal' [01:28:18.779] - Field: 'lazy' [01:28:18.779] - Field: 'state' [01:28:18.780] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.780] - Launch lazy future ... [01:28:18.780] Packages needed by the future expression (n = 0): [01:28:18.780] Packages needed by future strategies (n = 0): [01:28:18.781] { [01:28:18.781] { [01:28:18.781] { [01:28:18.781] ...future.startTime <- base::Sys.time() [01:28:18.781] { [01:28:18.781] { [01:28:18.781] { [01:28:18.781] { [01:28:18.781] base::local({ [01:28:18.781] has_future <- base::requireNamespace("future", [01:28:18.781] quietly = TRUE) [01:28:18.781] if (has_future) { [01:28:18.781] ns <- base::getNamespace("future") [01:28:18.781] version <- ns[[".package"]][["version"]] [01:28:18.781] if (is.null(version)) [01:28:18.781] version <- utils::packageVersion("future") [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] version <- NULL [01:28:18.781] } [01:28:18.781] if (!has_future || version < "1.8.0") { [01:28:18.781] info <- base::c(r_version = base::gsub("R version ", [01:28:18.781] "", base::R.version$version.string), [01:28:18.781] platform = base::sprintf("%s (%s-bit)", [01:28:18.781] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.781] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.781] "release", "version")], collapse = " "), [01:28:18.781] hostname = base::Sys.info()[["nodename"]]) [01:28:18.781] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.781] info) [01:28:18.781] info <- base::paste(info, collapse = "; ") [01:28:18.781] if (!has_future) { [01:28:18.781] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.781] info) [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.781] info, version) [01:28:18.781] } [01:28:18.781] base::stop(msg) [01:28:18.781] } [01:28:18.781] }) [01:28:18.781] } [01:28:18.781] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.781] base::options(mc.cores = 1L) [01:28:18.781] } [01:28:18.781] options(future.plan = NULL) [01:28:18.781] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.781] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.781] } [01:28:18.781] ...future.workdir <- getwd() [01:28:18.781] } [01:28:18.781] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.781] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.781] } [01:28:18.781] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.781] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.781] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.781] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.781] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.781] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.781] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.781] base::names(...future.oldOptions)) [01:28:18.781] } [01:28:18.781] if (FALSE) { [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] if (TRUE) { [01:28:18.781] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.781] open = "w") [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.781] windows = "NUL", "/dev/null"), open = "w") [01:28:18.781] } [01:28:18.781] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.781] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.781] base::sink(type = "output", split = FALSE) [01:28:18.781] base::close(...future.stdout) [01:28:18.781] }, add = TRUE) [01:28:18.781] } [01:28:18.781] ...future.frame <- base::sys.nframe() [01:28:18.781] ...future.conditions <- base::list() [01:28:18.781] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.781] if (FALSE) { [01:28:18.781] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.781] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.781] } [01:28:18.781] ...future.result <- base::tryCatch({ [01:28:18.781] base::withCallingHandlers({ [01:28:18.781] ...future.value <- base::withVisible(base::local({ [01:28:18.781] ...future.makeSendCondition <- base::local({ [01:28:18.781] sendCondition <- NULL [01:28:18.781] function(frame = 1L) { [01:28:18.781] if (is.function(sendCondition)) [01:28:18.781] return(sendCondition) [01:28:18.781] ns <- getNamespace("parallel") [01:28:18.781] if (exists("sendData", mode = "function", [01:28:18.781] envir = ns)) { [01:28:18.781] parallel_sendData <- get("sendData", mode = "function", [01:28:18.781] envir = ns) [01:28:18.781] envir <- sys.frame(frame) [01:28:18.781] master <- NULL [01:28:18.781] while (!identical(envir, .GlobalEnv) && [01:28:18.781] !identical(envir, emptyenv())) { [01:28:18.781] if (exists("master", mode = "list", envir = envir, [01:28:18.781] inherits = FALSE)) { [01:28:18.781] master <- get("master", mode = "list", [01:28:18.781] envir = envir, inherits = FALSE) [01:28:18.781] if (inherits(master, c("SOCKnode", [01:28:18.781] "SOCK0node"))) { [01:28:18.781] sendCondition <<- function(cond) { [01:28:18.781] data <- list(type = "VALUE", value = cond, [01:28:18.781] success = TRUE) [01:28:18.781] parallel_sendData(master, data) [01:28:18.781] } [01:28:18.781] return(sendCondition) [01:28:18.781] } [01:28:18.781] } [01:28:18.781] frame <- frame + 1L [01:28:18.781] envir <- sys.frame(frame) [01:28:18.781] } [01:28:18.781] } [01:28:18.781] sendCondition <<- function(cond) NULL [01:28:18.781] } [01:28:18.781] }) [01:28:18.781] withCallingHandlers({ [01:28:18.781] { [01:28:18.781] f1$owner [01:28:18.781] } [01:28:18.781] }, immediateCondition = function(cond) { [01:28:18.781] sendCondition <- ...future.makeSendCondition() [01:28:18.781] sendCondition(cond) [01:28:18.781] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.781] { [01:28:18.781] inherits <- base::inherits [01:28:18.781] invokeRestart <- base::invokeRestart [01:28:18.781] is.null <- base::is.null [01:28:18.781] muffled <- FALSE [01:28:18.781] if (inherits(cond, "message")) { [01:28:18.781] muffled <- grepl(pattern, "muffleMessage") [01:28:18.781] if (muffled) [01:28:18.781] invokeRestart("muffleMessage") [01:28:18.781] } [01:28:18.781] else if (inherits(cond, "warning")) { [01:28:18.781] muffled <- grepl(pattern, "muffleWarning") [01:28:18.781] if (muffled) [01:28:18.781] invokeRestart("muffleWarning") [01:28:18.781] } [01:28:18.781] else if (inherits(cond, "condition")) { [01:28:18.781] if (!is.null(pattern)) { [01:28:18.781] computeRestarts <- base::computeRestarts [01:28:18.781] grepl <- base::grepl [01:28:18.781] restarts <- computeRestarts(cond) [01:28:18.781] for (restart in restarts) { [01:28:18.781] name <- restart$name [01:28:18.781] if (is.null(name)) [01:28:18.781] next [01:28:18.781] if (!grepl(pattern, name)) [01:28:18.781] next [01:28:18.781] invokeRestart(restart) [01:28:18.781] muffled <- TRUE [01:28:18.781] break [01:28:18.781] } [01:28:18.781] } [01:28:18.781] } [01:28:18.781] invisible(muffled) [01:28:18.781] } [01:28:18.781] muffleCondition(cond) [01:28:18.781] }) [01:28:18.781] })) [01:28:18.781] future::FutureResult(value = ...future.value$value, [01:28:18.781] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.781] ...future.rng), globalenv = if (FALSE) [01:28:18.781] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.781] ...future.globalenv.names)) [01:28:18.781] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.781] }, condition = base::local({ [01:28:18.781] c <- base::c [01:28:18.781] inherits <- base::inherits [01:28:18.781] invokeRestart <- base::invokeRestart [01:28:18.781] length <- base::length [01:28:18.781] list <- base::list [01:28:18.781] seq.int <- base::seq.int [01:28:18.781] signalCondition <- base::signalCondition [01:28:18.781] sys.calls <- base::sys.calls [01:28:18.781] `[[` <- base::`[[` [01:28:18.781] `+` <- base::`+` [01:28:18.781] `<<-` <- base::`<<-` [01:28:18.781] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.781] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.781] 3L)] [01:28:18.781] } [01:28:18.781] function(cond) { [01:28:18.781] is_error <- inherits(cond, "error") [01:28:18.781] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.781] NULL) [01:28:18.781] if (is_error) { [01:28:18.781] sessionInformation <- function() { [01:28:18.781] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.781] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.781] search = base::search(), system = base::Sys.info()) [01:28:18.781] } [01:28:18.781] ...future.conditions[[length(...future.conditions) + [01:28:18.781] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.781] cond$call), session = sessionInformation(), [01:28:18.781] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.781] signalCondition(cond) [01:28:18.781] } [01:28:18.781] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.781] "immediateCondition"))) { [01:28:18.781] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.781] ...future.conditions[[length(...future.conditions) + [01:28:18.781] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.781] if (TRUE && !signal) { [01:28:18.781] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.781] { [01:28:18.781] inherits <- base::inherits [01:28:18.781] invokeRestart <- base::invokeRestart [01:28:18.781] is.null <- base::is.null [01:28:18.781] muffled <- FALSE [01:28:18.781] if (inherits(cond, "message")) { [01:28:18.781] muffled <- grepl(pattern, "muffleMessage") [01:28:18.781] if (muffled) [01:28:18.781] invokeRestart("muffleMessage") [01:28:18.781] } [01:28:18.781] else if (inherits(cond, "warning")) { [01:28:18.781] muffled <- grepl(pattern, "muffleWarning") [01:28:18.781] if (muffled) [01:28:18.781] invokeRestart("muffleWarning") [01:28:18.781] } [01:28:18.781] else if (inherits(cond, "condition")) { [01:28:18.781] if (!is.null(pattern)) { [01:28:18.781] computeRestarts <- base::computeRestarts [01:28:18.781] grepl <- base::grepl [01:28:18.781] restarts <- computeRestarts(cond) [01:28:18.781] for (restart in restarts) { [01:28:18.781] name <- restart$name [01:28:18.781] if (is.null(name)) [01:28:18.781] next [01:28:18.781] if (!grepl(pattern, name)) [01:28:18.781] next [01:28:18.781] invokeRestart(restart) [01:28:18.781] muffled <- TRUE [01:28:18.781] break [01:28:18.781] } [01:28:18.781] } [01:28:18.781] } [01:28:18.781] invisible(muffled) [01:28:18.781] } [01:28:18.781] muffleCondition(cond, pattern = "^muffle") [01:28:18.781] } [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] if (TRUE) { [01:28:18.781] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.781] { [01:28:18.781] inherits <- base::inherits [01:28:18.781] invokeRestart <- base::invokeRestart [01:28:18.781] is.null <- base::is.null [01:28:18.781] muffled <- FALSE [01:28:18.781] if (inherits(cond, "message")) { [01:28:18.781] muffled <- grepl(pattern, "muffleMessage") [01:28:18.781] if (muffled) [01:28:18.781] invokeRestart("muffleMessage") [01:28:18.781] } [01:28:18.781] else if (inherits(cond, "warning")) { [01:28:18.781] muffled <- grepl(pattern, "muffleWarning") [01:28:18.781] if (muffled) [01:28:18.781] invokeRestart("muffleWarning") [01:28:18.781] } [01:28:18.781] else if (inherits(cond, "condition")) { [01:28:18.781] if (!is.null(pattern)) { [01:28:18.781] computeRestarts <- base::computeRestarts [01:28:18.781] grepl <- base::grepl [01:28:18.781] restarts <- computeRestarts(cond) [01:28:18.781] for (restart in restarts) { [01:28:18.781] name <- restart$name [01:28:18.781] if (is.null(name)) [01:28:18.781] next [01:28:18.781] if (!grepl(pattern, name)) [01:28:18.781] next [01:28:18.781] invokeRestart(restart) [01:28:18.781] muffled <- TRUE [01:28:18.781] break [01:28:18.781] } [01:28:18.781] } [01:28:18.781] } [01:28:18.781] invisible(muffled) [01:28:18.781] } [01:28:18.781] muffleCondition(cond, pattern = "^muffle") [01:28:18.781] } [01:28:18.781] } [01:28:18.781] } [01:28:18.781] })) [01:28:18.781] }, error = function(ex) { [01:28:18.781] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.781] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.781] ...future.rng), started = ...future.startTime, [01:28:18.781] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.781] version = "1.8"), class = "FutureResult") [01:28:18.781] }, finally = { [01:28:18.781] if (!identical(...future.workdir, getwd())) [01:28:18.781] setwd(...future.workdir) [01:28:18.781] { [01:28:18.781] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.781] ...future.oldOptions$nwarnings <- NULL [01:28:18.781] } [01:28:18.781] base::options(...future.oldOptions) [01:28:18.781] if (.Platform$OS.type == "windows") { [01:28:18.781] old_names <- names(...future.oldEnvVars) [01:28:18.781] envs <- base::Sys.getenv() [01:28:18.781] names <- names(envs) [01:28:18.781] common <- intersect(names, old_names) [01:28:18.781] added <- setdiff(names, old_names) [01:28:18.781] removed <- setdiff(old_names, names) [01:28:18.781] changed <- common[...future.oldEnvVars[common] != [01:28:18.781] envs[common]] [01:28:18.781] NAMES <- toupper(changed) [01:28:18.781] args <- list() [01:28:18.781] for (kk in seq_along(NAMES)) { [01:28:18.781] name <- changed[[kk]] [01:28:18.781] NAME <- NAMES[[kk]] [01:28:18.781] if (name != NAME && is.element(NAME, old_names)) [01:28:18.781] next [01:28:18.781] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.781] } [01:28:18.781] NAMES <- toupper(added) [01:28:18.781] for (kk in seq_along(NAMES)) { [01:28:18.781] name <- added[[kk]] [01:28:18.781] NAME <- NAMES[[kk]] [01:28:18.781] if (name != NAME && is.element(NAME, old_names)) [01:28:18.781] next [01:28:18.781] args[[name]] <- "" [01:28:18.781] } [01:28:18.781] NAMES <- toupper(removed) [01:28:18.781] for (kk in seq_along(NAMES)) { [01:28:18.781] name <- removed[[kk]] [01:28:18.781] NAME <- NAMES[[kk]] [01:28:18.781] if (name != NAME && is.element(NAME, old_names)) [01:28:18.781] next [01:28:18.781] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.781] } [01:28:18.781] if (length(args) > 0) [01:28:18.781] base::do.call(base::Sys.setenv, args = args) [01:28:18.781] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.781] } [01:28:18.781] { [01:28:18.781] if (base::length(...future.futureOptionsAdded) > [01:28:18.781] 0L) { [01:28:18.781] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.781] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.781] base::options(opts) [01:28:18.781] } [01:28:18.781] { [01:28:18.781] { [01:28:18.781] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.781] NULL [01:28:18.781] } [01:28:18.781] options(future.plan = NULL) [01:28:18.781] if (is.na(NA_character_)) [01:28:18.781] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.781] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.781] future::plan(list(function (..., workers = 2L, [01:28:18.781] envir = parent.frame()) [01:28:18.781] strategy(..., workers = workers, envir = envir)), [01:28:18.781] .cleanup = FALSE, .init = FALSE) [01:28:18.781] } [01:28:18.781] } [01:28:18.781] } [01:28:18.781] }) [01:28:18.781] if (TRUE) { [01:28:18.781] base::sink(type = "output", split = FALSE) [01:28:18.781] if (TRUE) { [01:28:18.781] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.781] } [01:28:18.781] else { [01:28:18.781] ...future.result["stdout"] <- base::list(NULL) [01:28:18.781] } [01:28:18.781] base::close(...future.stdout) [01:28:18.781] ...future.stdout <- NULL [01:28:18.781] } [01:28:18.781] ...future.result$conditions <- ...future.conditions [01:28:18.781] ...future.result$finished <- base::Sys.time() [01:28:18.781] ...future.result [01:28:18.781] } [01:28:18.786] Exporting 1 global objects (1.58 MiB) to cluster node #1 ... [01:28:18.788] Exporting 'f1' (1.58 MiB) to cluster node #1 ... [01:28:18.800] Exporting 'f1' (1.58 MiB) to cluster node #1 ... DONE [01:28:18.800] Exporting 1 global objects (1.58 MiB) to cluster node #1 ... DONE [01:28:18.801] MultisessionFuture started [01:28:18.801] - Launch lazy future ... done [01:28:18.801] run() for 'MultisessionFuture' ... done > stopifnot(inherits(f4, "MultisessionFuture")) > cat(sprintf("Future #4 session: %d\n", f4$node)) Future #4 session: 1 > v4 <- value(f4) [01:28:18.801] result() for ClusterFuture ... [01:28:18.802] receiveMessageFromWorker() for ClusterFuture ... [01:28:18.802] - Validating connection of MultisessionFuture [01:28:18.816] - received message: FutureResult [01:28:18.816] - Received FutureResult [01:28:18.816] - Erased future from FutureRegistry [01:28:18.816] result() for ClusterFuture ... [01:28:18.817] - result already collected: FutureResult [01:28:18.817] result() for ClusterFuture ... done [01:28:18.817] receiveMessageFromWorker() for ClusterFuture ... done [01:28:18.817] result() for ClusterFuture ... done [01:28:18.817] result() for ClusterFuture ... [01:28:18.817] - result already collected: FutureResult [01:28:18.818] result() for ClusterFuture ... done > cat(sprintf("Future #4 owner: %s\n", v4)) Future #4 owner: e2c891c4-cab0-ea03-2a69-bb67514aebf9 > stopifnot(v4 == session_uuid) > > message("Creating future #5:") Creating future #5: > f5 <- future({ stopifnot(f1$owner != future:::session_uuid(attributes = TRUE)); "not-owner" }) [01:28:18.818] getGlobalsAndPackages() ... [01:28:18.818] Searching for globals... [01:28:18.820] - globals found: [6] '{', 'stopifnot', '!=', '$', 'f1', ':::' [01:28:18.820] Searching for globals ... DONE [01:28:18.820] Resolving globals: FALSE [01:28:18.823] The total size of the 1 globals is 1.58 MiB (1659072 bytes) [01:28:18.824] The total size of the 1 globals exported for future expression ('{; stopifnot(f1$owner != future:::session_uuid(attributes = TRUE)); "not-owner"; }') is 1.58 MiB.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'f1' (1.58 MiB of class 'environment') [01:28:18.824] - globals: [1] 'f1' [01:28:18.824] [01:28:18.824] getGlobalsAndPackages() ... DONE [01:28:18.824] run() for 'Future' ... [01:28:18.825] - state: 'created' [01:28:18.825] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.837] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.837] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.837] - Field: 'node' [01:28:18.838] - Field: 'label' [01:28:18.838] - Field: 'local' [01:28:18.838] - Field: 'owner' [01:28:18.838] - Field: 'envir' [01:28:18.838] - Field: 'workers' [01:28:18.838] - Field: 'packages' [01:28:18.839] - Field: 'gc' [01:28:18.839] - Field: 'conditions' [01:28:18.839] - Field: 'persistent' [01:28:18.839] - Field: 'expr' [01:28:18.839] - Field: 'uuid' [01:28:18.840] - Field: 'seed' [01:28:18.840] - Field: 'version' [01:28:18.840] - Field: 'result' [01:28:18.840] - Field: 'asynchronous' [01:28:18.840] - Field: 'calls' [01:28:18.841] - Field: 'globals' [01:28:18.841] - Field: 'stdout' [01:28:18.841] - Field: 'earlySignal' [01:28:18.841] - Field: 'lazy' [01:28:18.841] - Field: 'state' [01:28:18.841] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.842] - Launch lazy future ... [01:28:18.842] Packages needed by the future expression (n = 0): [01:28:18.842] Packages needed by future strategies (n = 0): [01:28:18.843] { [01:28:18.843] { [01:28:18.843] { [01:28:18.843] ...future.startTime <- base::Sys.time() [01:28:18.843] { [01:28:18.843] { [01:28:18.843] { [01:28:18.843] { [01:28:18.843] base::local({ [01:28:18.843] has_future <- base::requireNamespace("future", [01:28:18.843] quietly = TRUE) [01:28:18.843] if (has_future) { [01:28:18.843] ns <- base::getNamespace("future") [01:28:18.843] version <- ns[[".package"]][["version"]] [01:28:18.843] if (is.null(version)) [01:28:18.843] version <- utils::packageVersion("future") [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] version <- NULL [01:28:18.843] } [01:28:18.843] if (!has_future || version < "1.8.0") { [01:28:18.843] info <- base::c(r_version = base::gsub("R version ", [01:28:18.843] "", base::R.version$version.string), [01:28:18.843] platform = base::sprintf("%s (%s-bit)", [01:28:18.843] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.843] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.843] "release", "version")], collapse = " "), [01:28:18.843] hostname = base::Sys.info()[["nodename"]]) [01:28:18.843] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.843] info) [01:28:18.843] info <- base::paste(info, collapse = "; ") [01:28:18.843] if (!has_future) { [01:28:18.843] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.843] info) [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.843] info, version) [01:28:18.843] } [01:28:18.843] base::stop(msg) [01:28:18.843] } [01:28:18.843] }) [01:28:18.843] } [01:28:18.843] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.843] base::options(mc.cores = 1L) [01:28:18.843] } [01:28:18.843] options(future.plan = NULL) [01:28:18.843] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.843] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.843] } [01:28:18.843] ...future.workdir <- getwd() [01:28:18.843] } [01:28:18.843] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.843] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.843] } [01:28:18.843] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.843] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.843] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.843] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.843] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.843] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.843] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.843] base::names(...future.oldOptions)) [01:28:18.843] } [01:28:18.843] if (FALSE) { [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] if (TRUE) { [01:28:18.843] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.843] open = "w") [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.843] windows = "NUL", "/dev/null"), open = "w") [01:28:18.843] } [01:28:18.843] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.843] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.843] base::sink(type = "output", split = FALSE) [01:28:18.843] base::close(...future.stdout) [01:28:18.843] }, add = TRUE) [01:28:18.843] } [01:28:18.843] ...future.frame <- base::sys.nframe() [01:28:18.843] ...future.conditions <- base::list() [01:28:18.843] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.843] if (FALSE) { [01:28:18.843] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.843] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.843] } [01:28:18.843] ...future.result <- base::tryCatch({ [01:28:18.843] base::withCallingHandlers({ [01:28:18.843] ...future.value <- base::withVisible(base::local({ [01:28:18.843] ...future.makeSendCondition <- base::local({ [01:28:18.843] sendCondition <- NULL [01:28:18.843] function(frame = 1L) { [01:28:18.843] if (is.function(sendCondition)) [01:28:18.843] return(sendCondition) [01:28:18.843] ns <- getNamespace("parallel") [01:28:18.843] if (exists("sendData", mode = "function", [01:28:18.843] envir = ns)) { [01:28:18.843] parallel_sendData <- get("sendData", mode = "function", [01:28:18.843] envir = ns) [01:28:18.843] envir <- sys.frame(frame) [01:28:18.843] master <- NULL [01:28:18.843] while (!identical(envir, .GlobalEnv) && [01:28:18.843] !identical(envir, emptyenv())) { [01:28:18.843] if (exists("master", mode = "list", envir = envir, [01:28:18.843] inherits = FALSE)) { [01:28:18.843] master <- get("master", mode = "list", [01:28:18.843] envir = envir, inherits = FALSE) [01:28:18.843] if (inherits(master, c("SOCKnode", [01:28:18.843] "SOCK0node"))) { [01:28:18.843] sendCondition <<- function(cond) { [01:28:18.843] data <- list(type = "VALUE", value = cond, [01:28:18.843] success = TRUE) [01:28:18.843] parallel_sendData(master, data) [01:28:18.843] } [01:28:18.843] return(sendCondition) [01:28:18.843] } [01:28:18.843] } [01:28:18.843] frame <- frame + 1L [01:28:18.843] envir <- sys.frame(frame) [01:28:18.843] } [01:28:18.843] } [01:28:18.843] sendCondition <<- function(cond) NULL [01:28:18.843] } [01:28:18.843] }) [01:28:18.843] withCallingHandlers({ [01:28:18.843] { [01:28:18.843] stopifnot(f1$owner != future:::session_uuid(attributes = TRUE)) [01:28:18.843] "not-owner" [01:28:18.843] } [01:28:18.843] }, immediateCondition = function(cond) { [01:28:18.843] sendCondition <- ...future.makeSendCondition() [01:28:18.843] sendCondition(cond) [01:28:18.843] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.843] { [01:28:18.843] inherits <- base::inherits [01:28:18.843] invokeRestart <- base::invokeRestart [01:28:18.843] is.null <- base::is.null [01:28:18.843] muffled <- FALSE [01:28:18.843] if (inherits(cond, "message")) { [01:28:18.843] muffled <- grepl(pattern, "muffleMessage") [01:28:18.843] if (muffled) [01:28:18.843] invokeRestart("muffleMessage") [01:28:18.843] } [01:28:18.843] else if (inherits(cond, "warning")) { [01:28:18.843] muffled <- grepl(pattern, "muffleWarning") [01:28:18.843] if (muffled) [01:28:18.843] invokeRestart("muffleWarning") [01:28:18.843] } [01:28:18.843] else if (inherits(cond, "condition")) { [01:28:18.843] if (!is.null(pattern)) { [01:28:18.843] computeRestarts <- base::computeRestarts [01:28:18.843] grepl <- base::grepl [01:28:18.843] restarts <- computeRestarts(cond) [01:28:18.843] for (restart in restarts) { [01:28:18.843] name <- restart$name [01:28:18.843] if (is.null(name)) [01:28:18.843] next [01:28:18.843] if (!grepl(pattern, name)) [01:28:18.843] next [01:28:18.843] invokeRestart(restart) [01:28:18.843] muffled <- TRUE [01:28:18.843] break [01:28:18.843] } [01:28:18.843] } [01:28:18.843] } [01:28:18.843] invisible(muffled) [01:28:18.843] } [01:28:18.843] muffleCondition(cond) [01:28:18.843] }) [01:28:18.843] })) [01:28:18.843] future::FutureResult(value = ...future.value$value, [01:28:18.843] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.843] ...future.rng), globalenv = if (FALSE) [01:28:18.843] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.843] ...future.globalenv.names)) [01:28:18.843] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.843] }, condition = base::local({ [01:28:18.843] c <- base::c [01:28:18.843] inherits <- base::inherits [01:28:18.843] invokeRestart <- base::invokeRestart [01:28:18.843] length <- base::length [01:28:18.843] list <- base::list [01:28:18.843] seq.int <- base::seq.int [01:28:18.843] signalCondition <- base::signalCondition [01:28:18.843] sys.calls <- base::sys.calls [01:28:18.843] `[[` <- base::`[[` [01:28:18.843] `+` <- base::`+` [01:28:18.843] `<<-` <- base::`<<-` [01:28:18.843] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.843] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.843] 3L)] [01:28:18.843] } [01:28:18.843] function(cond) { [01:28:18.843] is_error <- inherits(cond, "error") [01:28:18.843] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.843] NULL) [01:28:18.843] if (is_error) { [01:28:18.843] sessionInformation <- function() { [01:28:18.843] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.843] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.843] search = base::search(), system = base::Sys.info()) [01:28:18.843] } [01:28:18.843] ...future.conditions[[length(...future.conditions) + [01:28:18.843] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.843] cond$call), session = sessionInformation(), [01:28:18.843] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.843] signalCondition(cond) [01:28:18.843] } [01:28:18.843] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.843] "immediateCondition"))) { [01:28:18.843] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.843] ...future.conditions[[length(...future.conditions) + [01:28:18.843] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.843] if (TRUE && !signal) { [01:28:18.843] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.843] { [01:28:18.843] inherits <- base::inherits [01:28:18.843] invokeRestart <- base::invokeRestart [01:28:18.843] is.null <- base::is.null [01:28:18.843] muffled <- FALSE [01:28:18.843] if (inherits(cond, "message")) { [01:28:18.843] muffled <- grepl(pattern, "muffleMessage") [01:28:18.843] if (muffled) [01:28:18.843] invokeRestart("muffleMessage") [01:28:18.843] } [01:28:18.843] else if (inherits(cond, "warning")) { [01:28:18.843] muffled <- grepl(pattern, "muffleWarning") [01:28:18.843] if (muffled) [01:28:18.843] invokeRestart("muffleWarning") [01:28:18.843] } [01:28:18.843] else if (inherits(cond, "condition")) { [01:28:18.843] if (!is.null(pattern)) { [01:28:18.843] computeRestarts <- base::computeRestarts [01:28:18.843] grepl <- base::grepl [01:28:18.843] restarts <- computeRestarts(cond) [01:28:18.843] for (restart in restarts) { [01:28:18.843] name <- restart$name [01:28:18.843] if (is.null(name)) [01:28:18.843] next [01:28:18.843] if (!grepl(pattern, name)) [01:28:18.843] next [01:28:18.843] invokeRestart(restart) [01:28:18.843] muffled <- TRUE [01:28:18.843] break [01:28:18.843] } [01:28:18.843] } [01:28:18.843] } [01:28:18.843] invisible(muffled) [01:28:18.843] } [01:28:18.843] muffleCondition(cond, pattern = "^muffle") [01:28:18.843] } [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] if (TRUE) { [01:28:18.843] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.843] { [01:28:18.843] inherits <- base::inherits [01:28:18.843] invokeRestart <- base::invokeRestart [01:28:18.843] is.null <- base::is.null [01:28:18.843] muffled <- FALSE [01:28:18.843] if (inherits(cond, "message")) { [01:28:18.843] muffled <- grepl(pattern, "muffleMessage") [01:28:18.843] if (muffled) [01:28:18.843] invokeRestart("muffleMessage") [01:28:18.843] } [01:28:18.843] else if (inherits(cond, "warning")) { [01:28:18.843] muffled <- grepl(pattern, "muffleWarning") [01:28:18.843] if (muffled) [01:28:18.843] invokeRestart("muffleWarning") [01:28:18.843] } [01:28:18.843] else if (inherits(cond, "condition")) { [01:28:18.843] if (!is.null(pattern)) { [01:28:18.843] computeRestarts <- base::computeRestarts [01:28:18.843] grepl <- base::grepl [01:28:18.843] restarts <- computeRestarts(cond) [01:28:18.843] for (restart in restarts) { [01:28:18.843] name <- restart$name [01:28:18.843] if (is.null(name)) [01:28:18.843] next [01:28:18.843] if (!grepl(pattern, name)) [01:28:18.843] next [01:28:18.843] invokeRestart(restart) [01:28:18.843] muffled <- TRUE [01:28:18.843] break [01:28:18.843] } [01:28:18.843] } [01:28:18.843] } [01:28:18.843] invisible(muffled) [01:28:18.843] } [01:28:18.843] muffleCondition(cond, pattern = "^muffle") [01:28:18.843] } [01:28:18.843] } [01:28:18.843] } [01:28:18.843] })) [01:28:18.843] }, error = function(ex) { [01:28:18.843] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.843] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.843] ...future.rng), started = ...future.startTime, [01:28:18.843] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.843] version = "1.8"), class = "FutureResult") [01:28:18.843] }, finally = { [01:28:18.843] if (!identical(...future.workdir, getwd())) [01:28:18.843] setwd(...future.workdir) [01:28:18.843] { [01:28:18.843] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.843] ...future.oldOptions$nwarnings <- NULL [01:28:18.843] } [01:28:18.843] base::options(...future.oldOptions) [01:28:18.843] if (.Platform$OS.type == "windows") { [01:28:18.843] old_names <- names(...future.oldEnvVars) [01:28:18.843] envs <- base::Sys.getenv() [01:28:18.843] names <- names(envs) [01:28:18.843] common <- intersect(names, old_names) [01:28:18.843] added <- setdiff(names, old_names) [01:28:18.843] removed <- setdiff(old_names, names) [01:28:18.843] changed <- common[...future.oldEnvVars[common] != [01:28:18.843] envs[common]] [01:28:18.843] NAMES <- toupper(changed) [01:28:18.843] args <- list() [01:28:18.843] for (kk in seq_along(NAMES)) { [01:28:18.843] name <- changed[[kk]] [01:28:18.843] NAME <- NAMES[[kk]] [01:28:18.843] if (name != NAME && is.element(NAME, old_names)) [01:28:18.843] next [01:28:18.843] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.843] } [01:28:18.843] NAMES <- toupper(added) [01:28:18.843] for (kk in seq_along(NAMES)) { [01:28:18.843] name <- added[[kk]] [01:28:18.843] NAME <- NAMES[[kk]] [01:28:18.843] if (name != NAME && is.element(NAME, old_names)) [01:28:18.843] next [01:28:18.843] args[[name]] <- "" [01:28:18.843] } [01:28:18.843] NAMES <- toupper(removed) [01:28:18.843] for (kk in seq_along(NAMES)) { [01:28:18.843] name <- removed[[kk]] [01:28:18.843] NAME <- NAMES[[kk]] [01:28:18.843] if (name != NAME && is.element(NAME, old_names)) [01:28:18.843] next [01:28:18.843] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.843] } [01:28:18.843] if (length(args) > 0) [01:28:18.843] base::do.call(base::Sys.setenv, args = args) [01:28:18.843] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.843] } [01:28:18.843] { [01:28:18.843] if (base::length(...future.futureOptionsAdded) > [01:28:18.843] 0L) { [01:28:18.843] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.843] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.843] base::options(opts) [01:28:18.843] } [01:28:18.843] { [01:28:18.843] { [01:28:18.843] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.843] NULL [01:28:18.843] } [01:28:18.843] options(future.plan = NULL) [01:28:18.843] if (is.na(NA_character_)) [01:28:18.843] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.843] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.843] future::plan(list(function (..., workers = 2L, [01:28:18.843] envir = parent.frame()) [01:28:18.843] strategy(..., workers = workers, envir = envir)), [01:28:18.843] .cleanup = FALSE, .init = FALSE) [01:28:18.843] } [01:28:18.843] } [01:28:18.843] } [01:28:18.843] }) [01:28:18.843] if (TRUE) { [01:28:18.843] base::sink(type = "output", split = FALSE) [01:28:18.843] if (TRUE) { [01:28:18.843] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.843] } [01:28:18.843] else { [01:28:18.843] ...future.result["stdout"] <- base::list(NULL) [01:28:18.843] } [01:28:18.843] base::close(...future.stdout) [01:28:18.843] ...future.stdout <- NULL [01:28:18.843] } [01:28:18.843] ...future.result$conditions <- ...future.conditions [01:28:18.843] ...future.result$finished <- base::Sys.time() [01:28:18.843] ...future.result [01:28:18.843] } [01:28:18.848] Exporting 1 global objects (1.58 MiB) to cluster node #1 ... [01:28:18.850] Exporting 'f1' (1.58 MiB) to cluster node #1 ... [01:28:18.862] Exporting 'f1' (1.58 MiB) to cluster node #1 ... DONE [01:28:18.862] Exporting 1 global objects (1.58 MiB) to cluster node #1 ... DONE [01:28:18.862] MultisessionFuture started [01:28:18.863] - Launch lazy future ... done [01:28:18.863] run() for 'MultisessionFuture' ... done > stopifnot(inherits(f5, "MultisessionFuture")) > v5 <- value(f5) [01:28:18.863] result() for ClusterFuture ... [01:28:18.863] receiveMessageFromWorker() for ClusterFuture ... [01:28:18.863] - Validating connection of MultisessionFuture [01:28:18.876] - received message: FutureResult [01:28:18.877] - Received FutureResult [01:28:18.877] - Erased future from FutureRegistry [01:28:18.877] result() for ClusterFuture ... [01:28:18.877] - result already collected: FutureResult [01:28:18.877] result() for ClusterFuture ... done [01:28:18.877] receiveMessageFromWorker() for ClusterFuture ... done [01:28:18.878] result() for ClusterFuture ... done [01:28:18.878] result() for ClusterFuture ... [01:28:18.878] - result already collected: FutureResult [01:28:18.878] result() for ClusterFuture ... done > stopifnot(v5 == "not-owner") > > message("- Asserting ownership ... DONE") - Asserting ownership ... DONE > > > message("- Trying with invalid ownership ...") - Trying with invalid ownership ... > > message("Creating future #1:") Creating future #1: > f1 <- future({ 42L }) [01:28:18.879] getGlobalsAndPackages() ... [01:28:18.879] Searching for globals... [01:28:18.879] - globals found: [1] '{' [01:28:18.880] Searching for globals ... DONE [01:28:18.880] Resolving globals: FALSE [01:28:18.880] [01:28:18.880] [01:28:18.881] getGlobalsAndPackages() ... DONE [01:28:18.883] run() for 'Future' ... [01:28:18.883] - state: 'created' [01:28:18.883] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.895] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.895] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.895] - Field: 'node' [01:28:18.896] - Field: 'label' [01:28:18.896] - Field: 'local' [01:28:18.896] - Field: 'owner' [01:28:18.896] - Field: 'envir' [01:28:18.896] - Field: 'workers' [01:28:18.896] - Field: 'packages' [01:28:18.897] - Field: 'gc' [01:28:18.897] - Field: 'conditions' [01:28:18.897] - Field: 'persistent' [01:28:18.897] - Field: 'expr' [01:28:18.897] - Field: 'uuid' [01:28:18.897] - Field: 'seed' [01:28:18.898] - Field: 'version' [01:28:18.898] - Field: 'result' [01:28:18.898] - Field: 'asynchronous' [01:28:18.898] - Field: 'calls' [01:28:18.898] - Field: 'globals' [01:28:18.898] - Field: 'stdout' [01:28:18.899] - Field: 'earlySignal' [01:28:18.899] - Field: 'lazy' [01:28:18.899] - Field: 'state' [01:28:18.899] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.899] - Launch lazy future ... [01:28:18.900] Packages needed by the future expression (n = 0): [01:28:18.900] Packages needed by future strategies (n = 0): [01:28:18.900] { [01:28:18.900] { [01:28:18.900] { [01:28:18.900] ...future.startTime <- base::Sys.time() [01:28:18.900] { [01:28:18.900] { [01:28:18.900] { [01:28:18.900] { [01:28:18.900] base::local({ [01:28:18.900] has_future <- base::requireNamespace("future", [01:28:18.900] quietly = TRUE) [01:28:18.900] if (has_future) { [01:28:18.900] ns <- base::getNamespace("future") [01:28:18.900] version <- ns[[".package"]][["version"]] [01:28:18.900] if (is.null(version)) [01:28:18.900] version <- utils::packageVersion("future") [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] version <- NULL [01:28:18.900] } [01:28:18.900] if (!has_future || version < "1.8.0") { [01:28:18.900] info <- base::c(r_version = base::gsub("R version ", [01:28:18.900] "", base::R.version$version.string), [01:28:18.900] platform = base::sprintf("%s (%s-bit)", [01:28:18.900] base::R.version$platform, 8 * base::.Machine$sizeof.pointer), [01:28:18.900] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.900] "release", "version")], collapse = " "), [01:28:18.900] hostname = base::Sys.info()[["nodename"]]) [01:28:18.900] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.900] info) [01:28:18.900] info <- base::paste(info, collapse = "; ") [01:28:18.900] if (!has_future) { [01:28:18.900] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.900] info) [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.900] info, version) [01:28:18.900] } [01:28:18.900] base::stop(msg) [01:28:18.900] } [01:28:18.900] }) [01:28:18.900] } [01:28:18.900] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.900] base::options(mc.cores = 1L) [01:28:18.900] } [01:28:18.900] options(future.plan = NULL) [01:28:18.900] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.900] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.900] } [01:28:18.900] ...future.workdir <- getwd() [01:28:18.900] } [01:28:18.900] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.900] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.900] } [01:28:18.900] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.900] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.900] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.900] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.900] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.900] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.900] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.900] base::names(...future.oldOptions)) [01:28:18.900] } [01:28:18.900] if (FALSE) { [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] if (TRUE) { [01:28:18.900] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.900] open = "w") [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.900] windows = "NUL", "/dev/null"), open = "w") [01:28:18.900] } [01:28:18.900] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.900] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.900] base::sink(type = "output", split = FALSE) [01:28:18.900] base::close(...future.stdout) [01:28:18.900] }, add = TRUE) [01:28:18.900] } [01:28:18.900] ...future.frame <- base::sys.nframe() [01:28:18.900] ...future.conditions <- base::list() [01:28:18.900] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.900] if (FALSE) { [01:28:18.900] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.900] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.900] } [01:28:18.900] ...future.result <- base::tryCatch({ [01:28:18.900] base::withCallingHandlers({ [01:28:18.900] ...future.value <- base::withVisible(base::local({ [01:28:18.900] ...future.makeSendCondition <- base::local({ [01:28:18.900] sendCondition <- NULL [01:28:18.900] function(frame = 1L) { [01:28:18.900] if (is.function(sendCondition)) [01:28:18.900] return(sendCondition) [01:28:18.900] ns <- getNamespace("parallel") [01:28:18.900] if (exists("sendData", mode = "function", [01:28:18.900] envir = ns)) { [01:28:18.900] parallel_sendData <- get("sendData", mode = "function", [01:28:18.900] envir = ns) [01:28:18.900] envir <- sys.frame(frame) [01:28:18.900] master <- NULL [01:28:18.900] while (!identical(envir, .GlobalEnv) && [01:28:18.900] !identical(envir, emptyenv())) { [01:28:18.900] if (exists("master", mode = "list", envir = envir, [01:28:18.900] inherits = FALSE)) { [01:28:18.900] master <- get("master", mode = "list", [01:28:18.900] envir = envir, inherits = FALSE) [01:28:18.900] if (inherits(master, c("SOCKnode", [01:28:18.900] "SOCK0node"))) { [01:28:18.900] sendCondition <<- function(cond) { [01:28:18.900] data <- list(type = "VALUE", value = cond, [01:28:18.900] success = TRUE) [01:28:18.900] parallel_sendData(master, data) [01:28:18.900] } [01:28:18.900] return(sendCondition) [01:28:18.900] } [01:28:18.900] } [01:28:18.900] frame <- frame + 1L [01:28:18.900] envir <- sys.frame(frame) [01:28:18.900] } [01:28:18.900] } [01:28:18.900] sendCondition <<- function(cond) NULL [01:28:18.900] } [01:28:18.900] }) [01:28:18.900] withCallingHandlers({ [01:28:18.900] { [01:28:18.900] 42L [01:28:18.900] } [01:28:18.900] }, immediateCondition = function(cond) { [01:28:18.900] sendCondition <- ...future.makeSendCondition() [01:28:18.900] sendCondition(cond) [01:28:18.900] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.900] { [01:28:18.900] inherits <- base::inherits [01:28:18.900] invokeRestart <- base::invokeRestart [01:28:18.900] is.null <- base::is.null [01:28:18.900] muffled <- FALSE [01:28:18.900] if (inherits(cond, "message")) { [01:28:18.900] muffled <- grepl(pattern, "muffleMessage") [01:28:18.900] if (muffled) [01:28:18.900] invokeRestart("muffleMessage") [01:28:18.900] } [01:28:18.900] else if (inherits(cond, "warning")) { [01:28:18.900] muffled <- grepl(pattern, "muffleWarning") [01:28:18.900] if (muffled) [01:28:18.900] invokeRestart("muffleWarning") [01:28:18.900] } [01:28:18.900] else if (inherits(cond, "condition")) { [01:28:18.900] if (!is.null(pattern)) { [01:28:18.900] computeRestarts <- base::computeRestarts [01:28:18.900] grepl <- base::grepl [01:28:18.900] restarts <- computeRestarts(cond) [01:28:18.900] for (restart in restarts) { [01:28:18.900] name <- restart$name [01:28:18.900] if (is.null(name)) [01:28:18.900] next [01:28:18.900] if (!grepl(pattern, name)) [01:28:18.900] next [01:28:18.900] invokeRestart(restart) [01:28:18.900] muffled <- TRUE [01:28:18.900] break [01:28:18.900] } [01:28:18.900] } [01:28:18.900] } [01:28:18.900] invisible(muffled) [01:28:18.900] } [01:28:18.900] muffleCondition(cond) [01:28:18.900] }) [01:28:18.900] })) [01:28:18.900] future::FutureResult(value = ...future.value$value, [01:28:18.900] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.900] ...future.rng), globalenv = if (FALSE) [01:28:18.900] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.900] ...future.globalenv.names)) [01:28:18.900] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.900] }, condition = base::local({ [01:28:18.900] c <- base::c [01:28:18.900] inherits <- base::inherits [01:28:18.900] invokeRestart <- base::invokeRestart [01:28:18.900] length <- base::length [01:28:18.900] list <- base::list [01:28:18.900] seq.int <- base::seq.int [01:28:18.900] signalCondition <- base::signalCondition [01:28:18.900] sys.calls <- base::sys.calls [01:28:18.900] `[[` <- base::`[[` [01:28:18.900] `+` <- base::`+` [01:28:18.900] `<<-` <- base::`<<-` [01:28:18.900] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.900] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.900] 3L)] [01:28:18.900] } [01:28:18.900] function(cond) { [01:28:18.900] is_error <- inherits(cond, "error") [01:28:18.900] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.900] NULL) [01:28:18.900] if (is_error) { [01:28:18.900] sessionInformation <- function() { [01:28:18.900] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.900] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.900] search = base::search(), system = base::Sys.info()) [01:28:18.900] } [01:28:18.900] ...future.conditions[[length(...future.conditions) + [01:28:18.900] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.900] cond$call), session = sessionInformation(), [01:28:18.900] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.900] signalCondition(cond) [01:28:18.900] } [01:28:18.900] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.900] "immediateCondition"))) { [01:28:18.900] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.900] ...future.conditions[[length(...future.conditions) + [01:28:18.900] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.900] if (TRUE && !signal) { [01:28:18.900] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.900] { [01:28:18.900] inherits <- base::inherits [01:28:18.900] invokeRestart <- base::invokeRestart [01:28:18.900] is.null <- base::is.null [01:28:18.900] muffled <- FALSE [01:28:18.900] if (inherits(cond, "message")) { [01:28:18.900] muffled <- grepl(pattern, "muffleMessage") [01:28:18.900] if (muffled) [01:28:18.900] invokeRestart("muffleMessage") [01:28:18.900] } [01:28:18.900] else if (inherits(cond, "warning")) { [01:28:18.900] muffled <- grepl(pattern, "muffleWarning") [01:28:18.900] if (muffled) [01:28:18.900] invokeRestart("muffleWarning") [01:28:18.900] } [01:28:18.900] else if (inherits(cond, "condition")) { [01:28:18.900] if (!is.null(pattern)) { [01:28:18.900] computeRestarts <- base::computeRestarts [01:28:18.900] grepl <- base::grepl [01:28:18.900] restarts <- computeRestarts(cond) [01:28:18.900] for (restart in restarts) { [01:28:18.900] name <- restart$name [01:28:18.900] if (is.null(name)) [01:28:18.900] next [01:28:18.900] if (!grepl(pattern, name)) [01:28:18.900] next [01:28:18.900] invokeRestart(restart) [01:28:18.900] muffled <- TRUE [01:28:18.900] break [01:28:18.900] } [01:28:18.900] } [01:28:18.900] } [01:28:18.900] invisible(muffled) [01:28:18.900] } [01:28:18.900] muffleCondition(cond, pattern = "^muffle") [01:28:18.900] } [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] if (TRUE) { [01:28:18.900] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.900] { [01:28:18.900] inherits <- base::inherits [01:28:18.900] invokeRestart <- base::invokeRestart [01:28:18.900] is.null <- base::is.null [01:28:18.900] muffled <- FALSE [01:28:18.900] if (inherits(cond, "message")) { [01:28:18.900] muffled <- grepl(pattern, "muffleMessage") [01:28:18.900] if (muffled) [01:28:18.900] invokeRestart("muffleMessage") [01:28:18.900] } [01:28:18.900] else if (inherits(cond, "warning")) { [01:28:18.900] muffled <- grepl(pattern, "muffleWarning") [01:28:18.900] if (muffled) [01:28:18.900] invokeRestart("muffleWarning") [01:28:18.900] } [01:28:18.900] else if (inherits(cond, "condition")) { [01:28:18.900] if (!is.null(pattern)) { [01:28:18.900] computeRestarts <- base::computeRestarts [01:28:18.900] grepl <- base::grepl [01:28:18.900] restarts <- computeRestarts(cond) [01:28:18.900] for (restart in restarts) { [01:28:18.900] name <- restart$name [01:28:18.900] if (is.null(name)) [01:28:18.900] next [01:28:18.900] if (!grepl(pattern, name)) [01:28:18.900] next [01:28:18.900] invokeRestart(restart) [01:28:18.900] muffled <- TRUE [01:28:18.900] break [01:28:18.900] } [01:28:18.900] } [01:28:18.900] } [01:28:18.900] invisible(muffled) [01:28:18.900] } [01:28:18.900] muffleCondition(cond, pattern = "^muffle") [01:28:18.900] } [01:28:18.900] } [01:28:18.900] } [01:28:18.900] })) [01:28:18.900] }, error = function(ex) { [01:28:18.900] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.900] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.900] ...future.rng), started = ...future.startTime, [01:28:18.900] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.900] version = "1.8"), class = "FutureResult") [01:28:18.900] }, finally = { [01:28:18.900] if (!identical(...future.workdir, getwd())) [01:28:18.900] setwd(...future.workdir) [01:28:18.900] { [01:28:18.900] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.900] ...future.oldOptions$nwarnings <- NULL [01:28:18.900] } [01:28:18.900] base::options(...future.oldOptions) [01:28:18.900] if (.Platform$OS.type == "windows") { [01:28:18.900] old_names <- names(...future.oldEnvVars) [01:28:18.900] envs <- base::Sys.getenv() [01:28:18.900] names <- names(envs) [01:28:18.900] common <- intersect(names, old_names) [01:28:18.900] added <- setdiff(names, old_names) [01:28:18.900] removed <- setdiff(old_names, names) [01:28:18.900] changed <- common[...future.oldEnvVars[common] != [01:28:18.900] envs[common]] [01:28:18.900] NAMES <- toupper(changed) [01:28:18.900] args <- list() [01:28:18.900] for (kk in seq_along(NAMES)) { [01:28:18.900] name <- changed[[kk]] [01:28:18.900] NAME <- NAMES[[kk]] [01:28:18.900] if (name != NAME && is.element(NAME, old_names)) [01:28:18.900] next [01:28:18.900] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.900] } [01:28:18.900] NAMES <- toupper(added) [01:28:18.900] for (kk in seq_along(NAMES)) { [01:28:18.900] name <- added[[kk]] [01:28:18.900] NAME <- NAMES[[kk]] [01:28:18.900] if (name != NAME && is.element(NAME, old_names)) [01:28:18.900] next [01:28:18.900] args[[name]] <- "" [01:28:18.900] } [01:28:18.900] NAMES <- toupper(removed) [01:28:18.900] for (kk in seq_along(NAMES)) { [01:28:18.900] name <- removed[[kk]] [01:28:18.900] NAME <- NAMES[[kk]] [01:28:18.900] if (name != NAME && is.element(NAME, old_names)) [01:28:18.900] next [01:28:18.900] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.900] } [01:28:18.900] if (length(args) > 0) [01:28:18.900] base::do.call(base::Sys.setenv, args = args) [01:28:18.900] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.900] } [01:28:18.900] { [01:28:18.900] if (base::length(...future.futureOptionsAdded) > [01:28:18.900] 0L) { [01:28:18.900] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.900] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.900] base::options(opts) [01:28:18.900] } [01:28:18.900] { [01:28:18.900] { [01:28:18.900] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.900] NULL [01:28:18.900] } [01:28:18.900] options(future.plan = NULL) [01:28:18.900] if (is.na(NA_character_)) [01:28:18.900] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.900] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.900] future::plan(list(function (..., workers = 2L, [01:28:18.900] envir = parent.frame()) [01:28:18.900] strategy(..., workers = workers, envir = envir)), [01:28:18.900] .cleanup = FALSE, .init = FALSE) [01:28:18.900] } [01:28:18.900] } [01:28:18.900] } [01:28:18.900] }) [01:28:18.900] if (TRUE) { [01:28:18.900] base::sink(type = "output", split = FALSE) [01:28:18.900] if (TRUE) { [01:28:18.900] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.900] } [01:28:18.900] else { [01:28:18.900] ...future.result["stdout"] <- base::list(NULL) [01:28:18.900] } [01:28:18.900] base::close(...future.stdout) [01:28:18.900] ...future.stdout <- NULL [01:28:18.900] } [01:28:18.900] ...future.result$conditions <- ...future.conditions [01:28:18.900] ...future.result$finished <- base::Sys.time() [01:28:18.900] ...future.result [01:28:18.900] } [01:28:18.906] MultisessionFuture started [01:28:18.906] - Launch lazy future ... done [01:28:18.906] run() for 'MultisessionFuture' ... done > ## FIXME: print() calls resolved(), which triggers a result() collection, > ## and future 'f1' to become resolved. This means future 'f2' below > ## may launch on the same worker as 'f1'. So, don't resolve(). > # print(f1) > cat(sprintf("Future #1 session: %d\n", f1$node)) Future #1 session: 1 > stopifnot(identical(f1$owner, session_uuid)) > print(usedNodes(f1)) used total 1 2 > > message("Creating future #2:") Creating future #2: > f2 <- future({ value(f1) }) [01:28:18.907] getGlobalsAndPackages() ... [01:28:18.907] Searching for globals... [01:28:18.908] - globals found: [3] '{', 'value', 'f1' [01:28:18.908] Searching for globals ... DONE [01:28:18.908] Resolving globals: FALSE [01:28:18.911] The total size of the 1 globals is 1.57 MiB (1651464 bytes) [01:28:18.911] The total size of the 1 globals exported for future expression ('{; value(f1); }') is 1.57 MiB.. This exceeds the maximum allowed size of 500.00 MiB (option 'future.globals.maxSize'). There is one global: 'f1' (1.57 MiB of class 'environment') [01:28:18.911] - globals: [1] 'f1' [01:28:18.912] - packages: [1] 'future' [01:28:18.912] getGlobalsAndPackages() ... DONE [01:28:18.912] run() for 'Future' ... [01:28:18.912] - state: 'created' [01:28:18.913] - Future backend: 'FutureStrategy', 'tweaked', 'multisession', 'cluster', 'multiprocess', 'future', 'function' [01:28:18.925] - Future class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' [01:28:18.925] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... [01:28:18.925] - Field: 'node' [01:28:18.925] - Field: 'label' [01:28:18.925] - Field: 'local' [01:28:18.926] - Field: 'owner' [01:28:18.926] - Field: 'envir' [01:28:18.926] - Field: 'workers' [01:28:18.926] - Field: 'packages' [01:28:18.926] - Field: 'gc' [01:28:18.926] - Field: 'conditions' [01:28:18.927] - Field: 'persistent' [01:28:18.927] - Field: 'expr' [01:28:18.927] - Field: 'uuid' [01:28:18.927] - Field: 'seed' [01:28:18.927] - Field: 'version' [01:28:18.927] - Field: 'result' [01:28:18.928] - Field: 'asynchronous' [01:28:18.928] - Field: 'calls' [01:28:18.928] - Field: 'globals' [01:28:18.928] - Field: 'stdout' [01:28:18.928] - Field: 'earlySignal' [01:28:18.928] - Field: 'lazy' [01:28:18.929] - Field: 'state' [01:28:18.929] - Copy elements of temporary 'MultisessionFuture' to final 'Future' object ... done [01:28:18.929] - Launch lazy future ... [01:28:18.929] Packages needed by the future expression (n = 1): 'future' [01:28:18.930] Packages needed by future strategies (n = 0): [01:28:18.930] { [01:28:18.930] { [01:28:18.930] { [01:28:18.930] ...future.startTime <- base::Sys.time() [01:28:18.930] { [01:28:18.930] { [01:28:18.930] { [01:28:18.930] { [01:28:18.930] { [01:28:18.930] base::local({ [01:28:18.930] has_future <- base::requireNamespace("future", [01:28:18.930] quietly = TRUE) [01:28:18.930] if (has_future) { [01:28:18.930] ns <- base::getNamespace("future") [01:28:18.930] version <- ns[[".package"]][["version"]] [01:28:18.930] if (is.null(version)) [01:28:18.930] version <- utils::packageVersion("future") [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] version <- NULL [01:28:18.930] } [01:28:18.930] if (!has_future || version < "1.8.0") { [01:28:18.930] info <- base::c(r_version = base::gsub("R version ", [01:28:18.930] "", base::R.version$version.string), [01:28:18.930] platform = base::sprintf("%s (%s-bit)", [01:28:18.930] base::R.version$platform, 8 * [01:28:18.930] base::.Machine$sizeof.pointer), [01:28:18.930] os = base::paste(base::Sys.info()[base::c("sysname", [01:28:18.930] "release", "version")], collapse = " "), [01:28:18.930] hostname = base::Sys.info()[["nodename"]]) [01:28:18.930] info <- base::sprintf("%s: %s", base::names(info), [01:28:18.930] info) [01:28:18.930] info <- base::paste(info, collapse = "; ") [01:28:18.930] if (!has_future) { [01:28:18.930] msg <- base::sprintf("Package 'future' is not installed on worker (%s)", [01:28:18.930] info) [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] msg <- base::sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", [01:28:18.930] info, version) [01:28:18.930] } [01:28:18.930] base::stop(msg) [01:28:18.930] } [01:28:18.930] }) [01:28:18.930] } [01:28:18.930] ...future.mc.cores.old <- base::getOption("mc.cores") [01:28:18.930] base::options(mc.cores = 1L) [01:28:18.930] } [01:28:18.930] base::local({ [01:28:18.930] for (pkg in "future") { [01:28:18.930] base::loadNamespace(pkg) [01:28:18.930] base::library(pkg, character.only = TRUE) [01:28:18.930] } [01:28:18.930] }) [01:28:18.930] } [01:28:18.930] options(future.plan = NULL) [01:28:18.930] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.930] future::plan("default", .cleanup = FALSE, .init = FALSE) [01:28:18.930] } [01:28:18.930] ...future.workdir <- getwd() [01:28:18.930] } [01:28:18.930] ...future.oldOptions <- base::as.list(base::.Options) [01:28:18.930] ...future.oldEnvVars <- base::Sys.getenv() [01:28:18.930] } [01:28:18.930] base::options(future.startup.script = FALSE, future.globals.onMissing = NULL, [01:28:18.930] future.globals.maxSize = NULL, future.globals.method = NULL, [01:28:18.930] future.globals.onMissing = NULL, future.globals.onReference = NULL, [01:28:18.930] future.globals.resolve = NULL, future.resolve.recursive = NULL, [01:28:18.930] future.rng.onMisuse = NULL, future.rng.onMisuse.keepFuture = NULL, [01:28:18.930] future.stdout.windows.reencode = NULL, width = 80L) [01:28:18.930] ...future.futureOptionsAdded <- base::setdiff(base::names(base::.Options), [01:28:18.930] base::names(...future.oldOptions)) [01:28:18.930] } [01:28:18.930] if (FALSE) { [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] if (TRUE) { [01:28:18.930] ...future.stdout <- base::rawConnection(base::raw(0L), [01:28:18.930] open = "w") [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] ...future.stdout <- base::file(base::switch(.Platform$OS.type, [01:28:18.930] windows = "NUL", "/dev/null"), open = "w") [01:28:18.930] } [01:28:18.930] base::sink(...future.stdout, type = "output", split = FALSE) [01:28:18.930] base::on.exit(if (!base::is.null(...future.stdout)) { [01:28:18.930] base::sink(type = "output", split = FALSE) [01:28:18.930] base::close(...future.stdout) [01:28:18.930] }, add = TRUE) [01:28:18.930] } [01:28:18.930] ...future.frame <- base::sys.nframe() [01:28:18.930] ...future.conditions <- base::list() [01:28:18.930] ...future.rng <- base::globalenv()$.Random.seed [01:28:18.930] if (FALSE) { [01:28:18.930] ...future.globalenv.names <- c(base::names(base::.GlobalEnv), [01:28:18.930] "...future.value", "...future.globalenv.names", ".Random.seed") [01:28:18.930] } [01:28:18.930] ...future.result <- base::tryCatch({ [01:28:18.930] base::withCallingHandlers({ [01:28:18.930] ...future.value <- base::withVisible(base::local({ [01:28:18.930] ...future.makeSendCondition <- base::local({ [01:28:18.930] sendCondition <- NULL [01:28:18.930] function(frame = 1L) { [01:28:18.930] if (is.function(sendCondition)) [01:28:18.930] return(sendCondition) [01:28:18.930] ns <- getNamespace("parallel") [01:28:18.930] if (exists("sendData", mode = "function", [01:28:18.930] envir = ns)) { [01:28:18.930] parallel_sendData <- get("sendData", mode = "function", [01:28:18.930] envir = ns) [01:28:18.930] envir <- sys.frame(frame) [01:28:18.930] master <- NULL [01:28:18.930] while (!identical(envir, .GlobalEnv) && [01:28:18.930] !identical(envir, emptyenv())) { [01:28:18.930] if (exists("master", mode = "list", envir = envir, [01:28:18.930] inherits = FALSE)) { [01:28:18.930] master <- get("master", mode = "list", [01:28:18.930] envir = envir, inherits = FALSE) [01:28:18.930] if (inherits(master, c("SOCKnode", [01:28:18.930] "SOCK0node"))) { [01:28:18.930] sendCondition <<- function(cond) { [01:28:18.930] data <- list(type = "VALUE", value = cond, [01:28:18.930] success = TRUE) [01:28:18.930] parallel_sendData(master, data) [01:28:18.930] } [01:28:18.930] return(sendCondition) [01:28:18.930] } [01:28:18.930] } [01:28:18.930] frame <- frame + 1L [01:28:18.930] envir <- sys.frame(frame) [01:28:18.930] } [01:28:18.930] } [01:28:18.930] sendCondition <<- function(cond) NULL [01:28:18.930] } [01:28:18.930] }) [01:28:18.930] withCallingHandlers({ [01:28:18.930] { [01:28:18.930] value(f1) [01:28:18.930] } [01:28:18.930] }, immediateCondition = function(cond) { [01:28:18.930] sendCondition <- ...future.makeSendCondition() [01:28:18.930] sendCondition(cond) [01:28:18.930] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.930] { [01:28:18.930] inherits <- base::inherits [01:28:18.930] invokeRestart <- base::invokeRestart [01:28:18.930] is.null <- base::is.null [01:28:18.930] muffled <- FALSE [01:28:18.930] if (inherits(cond, "message")) { [01:28:18.930] muffled <- grepl(pattern, "muffleMessage") [01:28:18.930] if (muffled) [01:28:18.930] invokeRestart("muffleMessage") [01:28:18.930] } [01:28:18.930] else if (inherits(cond, "warning")) { [01:28:18.930] muffled <- grepl(pattern, "muffleWarning") [01:28:18.930] if (muffled) [01:28:18.930] invokeRestart("muffleWarning") [01:28:18.930] } [01:28:18.930] else if (inherits(cond, "condition")) { [01:28:18.930] if (!is.null(pattern)) { [01:28:18.930] computeRestarts <- base::computeRestarts [01:28:18.930] grepl <- base::grepl [01:28:18.930] restarts <- computeRestarts(cond) [01:28:18.930] for (restart in restarts) { [01:28:18.930] name <- restart$name [01:28:18.930] if (is.null(name)) [01:28:18.930] next [01:28:18.930] if (!grepl(pattern, name)) [01:28:18.930] next [01:28:18.930] invokeRestart(restart) [01:28:18.930] muffled <- TRUE [01:28:18.930] break [01:28:18.930] } [01:28:18.930] } [01:28:18.930] } [01:28:18.930] invisible(muffled) [01:28:18.930] } [01:28:18.930] muffleCondition(cond) [01:28:18.930] }) [01:28:18.930] })) [01:28:18.930] future::FutureResult(value = ...future.value$value, [01:28:18.930] visible = ...future.value$visible, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.930] ...future.rng), globalenv = if (FALSE) [01:28:18.930] list(added = base::setdiff(base::names(base::.GlobalEnv), [01:28:18.930] ...future.globalenv.names)) [01:28:18.930] else NULL, started = ...future.startTime, version = "1.8") [01:28:18.930] }, condition = base::local({ [01:28:18.930] c <- base::c [01:28:18.930] inherits <- base::inherits [01:28:18.930] invokeRestart <- base::invokeRestart [01:28:18.930] length <- base::length [01:28:18.930] list <- base::list [01:28:18.930] seq.int <- base::seq.int [01:28:18.930] signalCondition <- base::signalCondition [01:28:18.930] sys.calls <- base::sys.calls [01:28:18.930] `[[` <- base::`[[` [01:28:18.930] `+` <- base::`+` [01:28:18.930] `<<-` <- base::`<<-` [01:28:18.930] sysCalls <- function(calls = sys.calls(), from = 1L) { [01:28:18.930] calls[seq.int(from = from + 12L, to = length(calls) - [01:28:18.930] 3L)] [01:28:18.930] } [01:28:18.930] function(cond) { [01:28:18.930] is_error <- inherits(cond, "error") [01:28:18.930] ignore <- !is_error && !is.null(NULL) && inherits(cond, [01:28:18.930] NULL) [01:28:18.930] if (is_error) { [01:28:18.930] sessionInformation <- function() { [01:28:18.930] list(r = base::R.Version(), locale = base::Sys.getlocale(), [01:28:18.930] rngkind = base::RNGkind(), namespaces = base::loadedNamespaces(), [01:28:18.930] search = base::search(), system = base::Sys.info()) [01:28:18.930] } [01:28:18.930] ...future.conditions[[length(...future.conditions) + [01:28:18.930] 1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), [01:28:18.930] cond$call), session = sessionInformation(), [01:28:18.930] timestamp = base::Sys.time(), signaled = 0L) [01:28:18.930] signalCondition(cond) [01:28:18.930] } [01:28:18.930] else if (!ignore && TRUE && inherits(cond, c("condition", [01:28:18.930] "immediateCondition"))) { [01:28:18.930] signal <- TRUE && inherits(cond, "immediateCondition") [01:28:18.930] ...future.conditions[[length(...future.conditions) + [01:28:18.930] 1L]] <<- list(condition = cond, signaled = base::as.integer(signal)) [01:28:18.930] if (TRUE && !signal) { [01:28:18.930] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.930] { [01:28:18.930] inherits <- base::inherits [01:28:18.930] invokeRestart <- base::invokeRestart [01:28:18.930] is.null <- base::is.null [01:28:18.930] muffled <- FALSE [01:28:18.930] if (inherits(cond, "message")) { [01:28:18.930] muffled <- grepl(pattern, "muffleMessage") [01:28:18.930] if (muffled) [01:28:18.930] invokeRestart("muffleMessage") [01:28:18.930] } [01:28:18.930] else if (inherits(cond, "warning")) { [01:28:18.930] muffled <- grepl(pattern, "muffleWarning") [01:28:18.930] if (muffled) [01:28:18.930] invokeRestart("muffleWarning") [01:28:18.930] } [01:28:18.930] else if (inherits(cond, "condition")) { [01:28:18.930] if (!is.null(pattern)) { [01:28:18.930] computeRestarts <- base::computeRestarts [01:28:18.930] grepl <- base::grepl [01:28:18.930] restarts <- computeRestarts(cond) [01:28:18.930] for (restart in restarts) { [01:28:18.930] name <- restart$name [01:28:18.930] if (is.null(name)) [01:28:18.930] next [01:28:18.930] if (!grepl(pattern, name)) [01:28:18.930] next [01:28:18.930] invokeRestart(restart) [01:28:18.930] muffled <- TRUE [01:28:18.930] break [01:28:18.930] } [01:28:18.930] } [01:28:18.930] } [01:28:18.930] invisible(muffled) [01:28:18.930] } [01:28:18.930] muffleCondition(cond, pattern = "^muffle") [01:28:18.930] } [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] if (TRUE) { [01:28:18.930] muffleCondition <- function (cond, pattern = "^muffle") [01:28:18.930] { [01:28:18.930] inherits <- base::inherits [01:28:18.930] invokeRestart <- base::invokeRestart [01:28:18.930] is.null <- base::is.null [01:28:18.930] muffled <- FALSE [01:28:18.930] if (inherits(cond, "message")) { [01:28:18.930] muffled <- grepl(pattern, "muffleMessage") [01:28:18.930] if (muffled) [01:28:18.930] invokeRestart("muffleMessage") [01:28:18.930] } [01:28:18.930] else if (inherits(cond, "warning")) { [01:28:18.930] muffled <- grepl(pattern, "muffleWarning") [01:28:18.930] if (muffled) [01:28:18.930] invokeRestart("muffleWarning") [01:28:18.930] } [01:28:18.930] else if (inherits(cond, "condition")) { [01:28:18.930] if (!is.null(pattern)) { [01:28:18.930] computeRestarts <- base::computeRestarts [01:28:18.930] grepl <- base::grepl [01:28:18.930] restarts <- computeRestarts(cond) [01:28:18.930] for (restart in restarts) { [01:28:18.930] name <- restart$name [01:28:18.930] if (is.null(name)) [01:28:18.930] next [01:28:18.930] if (!grepl(pattern, name)) [01:28:18.930] next [01:28:18.930] invokeRestart(restart) [01:28:18.930] muffled <- TRUE [01:28:18.930] break [01:28:18.930] } [01:28:18.930] } [01:28:18.930] } [01:28:18.930] invisible(muffled) [01:28:18.930] } [01:28:18.930] muffleCondition(cond, pattern = "^muffle") [01:28:18.930] } [01:28:18.930] } [01:28:18.930] } [01:28:18.930] })) [01:28:18.930] }, error = function(ex) { [01:28:18.930] base::structure(base::list(value = NULL, visible = NULL, [01:28:18.930] conditions = ...future.conditions, rng = !identical(base::globalenv()$.Random.seed, [01:28:18.930] ...future.rng), started = ...future.startTime, [01:28:18.930] finished = Sys.time(), session_uuid = NA_character_, [01:28:18.930] version = "1.8"), class = "FutureResult") [01:28:18.930] }, finally = { [01:28:18.930] if (!identical(...future.workdir, getwd())) [01:28:18.930] setwd(...future.workdir) [01:28:18.930] { [01:28:18.930] if (identical(getOption("nwarnings"), ...future.oldOptions$nwarnings)) { [01:28:18.930] ...future.oldOptions$nwarnings <- NULL [01:28:18.930] } [01:28:18.930] base::options(...future.oldOptions) [01:28:18.930] if (.Platform$OS.type == "windows") { [01:28:18.930] old_names <- names(...future.oldEnvVars) [01:28:18.930] envs <- base::Sys.getenv() [01:28:18.930] names <- names(envs) [01:28:18.930] common <- intersect(names, old_names) [01:28:18.930] added <- setdiff(names, old_names) [01:28:18.930] removed <- setdiff(old_names, names) [01:28:18.930] changed <- common[...future.oldEnvVars[common] != [01:28:18.930] envs[common]] [01:28:18.930] NAMES <- toupper(changed) [01:28:18.930] args <- list() [01:28:18.930] for (kk in seq_along(NAMES)) { [01:28:18.930] name <- changed[[kk]] [01:28:18.930] NAME <- NAMES[[kk]] [01:28:18.930] if (name != NAME && is.element(NAME, old_names)) [01:28:18.930] next [01:28:18.930] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.930] } [01:28:18.930] NAMES <- toupper(added) [01:28:18.930] for (kk in seq_along(NAMES)) { [01:28:18.930] name <- added[[kk]] [01:28:18.930] NAME <- NAMES[[kk]] [01:28:18.930] if (name != NAME && is.element(NAME, old_names)) [01:28:18.930] next [01:28:18.930] args[[name]] <- "" [01:28:18.930] } [01:28:18.930] NAMES <- toupper(removed) [01:28:18.930] for (kk in seq_along(NAMES)) { [01:28:18.930] name <- removed[[kk]] [01:28:18.930] NAME <- NAMES[[kk]] [01:28:18.930] if (name != NAME && is.element(NAME, old_names)) [01:28:18.930] next [01:28:18.930] args[[name]] <- ...future.oldEnvVars[[name]] [01:28:18.930] } [01:28:18.930] if (length(args) > 0) [01:28:18.930] base::do.call(base::Sys.setenv, args = args) [01:28:18.930] args <- names <- old_names <- NAMES <- envs <- common <- added <- removed <- NULL [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] base::do.call(base::Sys.setenv, args = base::as.list(...future.oldEnvVars)) [01:28:18.930] } [01:28:18.930] { [01:28:18.930] if (base::length(...future.futureOptionsAdded) > [01:28:18.930] 0L) { [01:28:18.930] opts <- base::vector("list", length = base::length(...future.futureOptionsAdded)) [01:28:18.930] base::names(opts) <- ...future.futureOptionsAdded [01:28:18.930] base::options(opts) [01:28:18.930] } [01:28:18.930] { [01:28:18.930] { [01:28:18.930] base::options(mc.cores = ...future.mc.cores.old) [01:28:18.930] NULL [01:28:18.930] } [01:28:18.930] options(future.plan = NULL) [01:28:18.930] if (is.na(NA_character_)) [01:28:18.930] Sys.unsetenv("R_FUTURE_PLAN") [01:28:18.930] else Sys.setenv(R_FUTURE_PLAN = NA_character_) [01:28:18.930] future::plan(list(function (..., workers = 2L, [01:28:18.930] envir = parent.frame()) [01:28:18.930] strategy(..., workers = workers, envir = envir)), [01:28:18.930] .cleanup = FALSE, .init = FALSE) [01:28:18.930] } [01:28:18.930] } [01:28:18.930] } [01:28:18.930] }) [01:28:18.930] if (TRUE) { [01:28:18.930] base::sink(type = "output", split = FALSE) [01:28:18.930] if (TRUE) { [01:28:18.930] ...future.result$stdout <- base::rawToChar(base::rawConnectionValue(...future.stdout)) [01:28:18.930] } [01:28:18.930] else { [01:28:18.930] ...future.result["stdout"] <- base::list(NULL) [01:28:18.930] } [01:28:18.930] base::close(...future.stdout) [01:28:18.930] ...future.stdout <- NULL [01:28:18.930] } [01:28:18.930] ...future.result$conditions <- ...future.conditions [01:28:18.930] ...future.result$finished <- base::Sys.time() [01:28:18.930] ...future.result [01:28:18.930] } [01:28:19.010] Exporting 1 global objects (1.57 MiB) to cluster node #2 ... [01:28:19.013] Exporting 'f1' (1.57 MiB) to cluster node #2 ... [01:28:19.025] Exporting 'f1' (1.57 MiB) to cluster node #2 ... DONE [01:28:19.025] Exporting 1 global objects (1.57 MiB) to cluster node #2 ... DONE [01:28:19.026] MultisessionFuture started [01:28:19.026] - Launch lazy future ... done [01:28:19.026] run() for 'MultisessionFuture' ... done > print(f2) MultisessionFuture: Label: '' Expression: { value(f1) } Lazy evaluation: FALSE Asynchronous evaluation: TRUE Local evaluation: TRUE Environment: R_GlobalEnv Capture standard output: TRUE Capture condition classes: 'condition' (excluding 'nothing') Globals: 1 objects totaling 1.57 MiB (MultisessionFuture 'f1' of 1.57 MiB) Packages: 1 packages ('future') L'Ecuyer-CMRG RNG seed: (seed = FALSE) [01:28:19.086] receiveMessageFromWorker() for ClusterFuture ... [01:28:19.087] - Validating connection of MultisessionFuture [01:28:19.099] - received message: FutureResult [01:28:19.099] - Received FutureResult [01:28:19.099] - Erased future from FutureRegistry [01:28:19.100] result() for ClusterFuture ... [01:28:19.100] - result already collected: FutureResult [01:28:19.100] result() for ClusterFuture ... done [01:28:19.100] signalConditions() ... [01:28:19.100] - include = 'immediateCondition' [01:28:19.100] - exclude = [01:28:19.101] - resignal = FALSE [01:28:19.101] - Number of conditions: 1 [01:28:19.101] signalConditions() ... done [01:28:19.101] receiveMessageFromWorker() for ClusterFuture ... done Resolved: TRUE Value: Conditions captured: Early signaling: FALSE Owner process: e2c891c4-cab0-ea03-2a69-bb67514aebf9 Class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' > cat(sprintf("Future #2 session: %d\n", f2$node)) Future #2 session: 2 > stopifnot(identical(f2$owner, session_uuid)) > print(usedNodes(f2)) used total 1 2 > > message("Getting value of future #2:") Getting value of future #2: > res <- tryCatch(value(f2), error = identity) [01:28:19.105] result() for ClusterFuture ... [01:28:19.105] - result already collected: FutureResult [01:28:19.106] result() for ClusterFuture ... done [01:28:19.106] result() for ClusterFuture ... [01:28:19.106] - result already collected: FutureResult [01:28:19.106] result() for ClusterFuture ... done [01:28:19.106] signalConditions() ... [01:28:19.106] - include = 'immediateCondition' [01:28:19.107] - exclude = [01:28:19.107] - resignal = FALSE [01:28:19.107] - Number of conditions: 1 [01:28:19.107] signalConditions() ... done [01:28:19.107] Future state: 'finished' [01:28:19.107] result() for ClusterFuture ... [01:28:19.108] - result already collected: FutureResult [01:28:19.108] result() for ClusterFuture ... done [01:28:19.108] signalConditions() ... [01:28:19.108] - include = 'condition' [01:28:19.108] - exclude = 'immediateCondition' [01:28:19.108] - resignal = TRUE [01:28:19.109] - Number of conditions: 1 [01:28:19.109] - Condition #1: 'FutureError', 'error', 'FutureCondition', 'condition' [01:28:19.109] signalConditions() ... done > print(res) Future UUID: b2b9c9ca-d719-7d0b-bbed-52c94a9359a2 DEBUG: BEGIN TROUBLESHOOTING HELP Future involved: MultisessionFuture: Label: '' Expression: { 42L } Lazy evaluation: FALSE Asynchronous evaluation: TRUE Local evaluation: TRUE Environment: R_GlobalEnv Capture standard output: TRUE Capture condition classes: 'condition' (excluding 'nothing') Globals: Packages: L'Ecuyer-CMRG RNG seed: (seed = FALSE) Resolved: FALSE Value: Conditions captured: Early signaling: FALSE Owner process: e2c891c4-cab0-ea03-2a69-bb67514aebf9 Class: 'MultisessionFuture', 'ClusterFuture', 'MultiprocessFuture', 'Future', 'environment' DEBUG: END TROUBLESHOOTING HELP > stopifnot(inherits(res, "error")) > > v1 <- value(f1) [01:28:19.110] result() for ClusterFuture ... [01:28:19.110] receiveMessageFromWorker() for ClusterFuture ... [01:28:19.111] - Validating connection of MultisessionFuture [01:28:19.111] - received message: FutureResult [01:28:19.111] - Received FutureResult [01:28:19.111] - Erased future from FutureRegistry [01:28:19.111] result() for ClusterFuture ... [01:28:19.112] - result already collected: FutureResult [01:28:19.112] result() for ClusterFuture ... done [01:28:19.112] receiveMessageFromWorker() for ClusterFuture ... done [01:28:19.112] result() for ClusterFuture ... done [01:28:19.112] result() for ClusterFuture ... [01:28:19.112] - result already collected: FutureResult [01:28:19.112] result() for ClusterFuture ... done > print(v1) [1] 42 > stopifnot(v1 == 42L) > > message("- Trying with invalid ownership ... DONE") - Trying with invalid ownership ... DONE > > message("*** future() - invalid ownership ... DONE") *** future() - invalid ownership ... DONE > > source("incl/end.R") [01:28:19.114] plan(): Setting new future strategy stack: [01:28:19.114] List of future strategies: [01:28:19.114] 1. FutureStrategy: [01:28:19.114] - args: function (..., envir = parent.frame(), workers = "") [01:28:19.114] - tweaked: FALSE [01:28:19.114] - call: future::plan(oplan) [01:28:19.115] plan(): nbrOfWorkers() = 1 Failed to undo environment variables: - Expected environment variables: [n=204] '!ExitCode', 'ALLUSERSPROFILE', 'APPDATA', 'BIBINPUTS', 'BINDIR', 'BSTINPUTS', 'COMMONPROGRAMFILES', 'COMPUTERNAME', 'COMSPEC', 'CURL_CA_BUNDLE', 'CYGWIN', 'CommonProgramFiles(x86)', 'CommonProgramW6432', 'DriverData', 'HOME', 'HOMEDRIVE', 'HOMEPATH', 'JAGS_ROOT', 'JAVA_HOME', 'LANGUAGE', 'LC_COLLATE', 'LC_MONETARY', 'LC_TIME', 'LOCALAPPDATA', 'LOGONSERVER', 'LS_HOME', 'LS_LICENSE_PATH', 'MAKE', 'MAKEFLAGS', 'MAKELEVEL', 'MFLAGS', 'MSMPI_BENCHMARKS', 'MSMPI_BIN', 'MSYS2_ENV_CONV_EXCL', 'NUMBER_OF_PROCESSORS', 'OCL', 'OMP_THREAD_LIMIT', 'OS', 'PATH', 'PATHEXT', 'PROCESSOR_ARCHITECTURE', 'PROCESSOR_IDENTIFIER', 'PROCESSOR_LEVEL', 'PROCESSOR_REVISION', 'PROGRAMFILES', 'PROMPT', 'PSModulePath', 'PUBLIC', 'PWD', 'ProgramData', 'ProgramFiles(x86)', 'ProgramW6432', 'RTOOLS43_HOME', 'R_ARCH', 'R_BROWSER', 'R_BZIPCMD', 'R_CMD', 'R_COMPILED_BY', 'R_CRAN_WEB', 'R_CUSTOM_TOOLS_PATH', 'R_CUSTOM_TOOLS_SOFT', 'R_DOC_DIR', 'R_ENVIRON_USER', 'R_GSCMD', 'R_GZIPCMD', 'R_HOME', 'R_INCLUDE_DIR', 'R_INSTALL_TAR', 'R_LIBS', 'R_LIBS_SITE', 'R_LIBS_USER', 'R_MAX_NUM_DLLS', 'R_OSTYPE', 'R_PAPERSIZE', 'R_PAPERSIZE_USER', 'R_PARALLELLY_MAKENODEPSOCK_AUTOKILL', 'R_PARALLELLY_MAKENODEPSOCK_CONNECTTIMEOUT', 'R_PARALLELLY_MAKENODEPSOCK_RSCRIPT_LABEL', 'R_PARALLELLY_MAKENODEPSOCK_SESSIONINFO_PKGS', 'R_PARALLELLY_MAKENODEPSOCK_TIMEOUT', 'R_PARALLELLY_RANDOM_PORTS', 'R_PARALLEL_PORT', 'R_RD4PDF', 'R_RTOOLS43_PATH', 'R_SCRIPT_LEGACY', 'R_SHARE_DIR', 'R_TESTS', 'R_UNZIPCMD', 'R_USER', 'R_VERSION', 'R_ZIPCMD', 'SED', 'SHLVL', 'SYSTEMDRIVE', 'SYSTEMROOT', 'TAR', 'TAR_OPTIONS', 'TEMP', 'TERM', 'TEXINPUTS', 'TMP', 'TMPDIR', 'USERDOMAIN', 'USERDOMAIN_ROAMINGPROFILE', 'USERNAME', 'USERPROFILE', 'WINDIR', '_', '_R_CHECK_AUTOCONF_', '_R_CHECK_BOGUS_RETURN_', '_R_CHECK_BROWSER_NONINTERACTIVE_', '_R_CHECK_BUILD_VIGNETTES_SEPARATELY_', '_R_CHECK_CODETOOLS_PROFILE_', '_R_CHECK_CODE_ASSIGN_TO_GLOBALENV_', '_R_CHECK_CODE_ATTACH_', '_R_CHECK_CODE_CLASS_IS_STRING_', '_R_CHECK_CODE_DATA_INTO_GLOBALENV_', '_R_CHECK_CODE_USAGE_VIA_NAMESPACES_', '_R_CHECK_CODE_USAGE_WITHOUT_LOADING_', '_R_CHECK_CODE_USAGE_WITH_ONLY_BASE_ATTACHED_', '_R_CHECK_CODOC_VARIABLES_IN_USAGES_', '_R_CHECK_COMPACT_DATA2_', '_R_CHECK_COMPILATION_FLAGS_', '_R_CHECK_CONNECTIONS_LEFT_OPEN_', '_R_CHECK_CRAN_INCOMING_', '_R_CHECK_CRAN_INCOMING_CHECK_FILE_URIS_', '_R_CHECK_CRAN_INCOMING_CHECK_URLS_IN_PARALLEL_', '_R_CHECK_CRAN_INCOMING_NOTE_GNU_MAKE_', '_R_CHECK_CRAN_INCOMING_REMOTE_', '_R_CHECK_CRAN_INCOMING_USE_ASPELL_', '_R_CHECK_DATALIST_', '_R_CHECK_DEPRECATED_DEFUNCT_', '_R_CHECK_DOC_SIZES2_', '_R_CHECK_DOT_FIRSTLIB_', '_R_CHECK_DOT_INTERNAL_', '_R_CHECK_EXAMPLE_TIMING_THRESHOLD_', '_R_CHECK_EXECUTABLES_', '_R_CHECK_EXECUTABLES_EXCLUSIONS_', '_R_CHECK_FF_CALLS_', '_R_CHECK_FF_DUP_', '_R_CHECK_FORCE_SUGGESTS_', '_R_CHECK_FUTURE_FILE_TIMESTAMPS_', '_R_CHECK_FUTURE_FILE_TIMESTAMPS_LEEWAY_', '_R_CHECK_HAVE_MYSQL_', '_R_CHECK_HAVE_ODBC_', '_R_CHECK_HAVE_PERL_', '_R_CHECK_HAVE_POSTGRES_', '_R_CHECK_INSTALL_DEPENDS_', '_R_CHECK_INTERNALS2_', '_R_CHECK_LENGTH_1_CONDITION_', '_R_CHECK_LICENSE_', '_R_CHECK_LIMIT_CORES_', '_R_CHECK_MATRIX_DATA_', '_R_CHECK_MBCS_CONVERSION_FAILURE_', '_R_CHECK_NATIVE_ROUTINE_REGISTRATION_', '_R_CHECK_NEWS_IN_PLAIN_TEXT_', '_R_CHECK_NO_RECOMMENDED_', '_R_CHECK_NO_STOP_ON_TEST_ERROR_', '_R_CHECK_ORPHANED_', '_R_CHECK_OVERWRITE_REGISTERED_S3_METHODS_', '_R_CHECK_PACKAGES_USED_IGNORE_UNUSED_IMPORTS_', '_R_CHECK_PACKAGES_USED_IN_TESTS_USE_SUBDIRS_', '_R_CHECK_PACKAGE_DATASETS_SUPPRESS_NOTES_', '_R_CHECK_PACKAGE_NAME_', '_R_CHECK_PKG_SIZES_', '_R_CHECK_PKG_SIZES_THRESHOLD_', '_R_CHECK_PRAGMAS_', '_R_CHECK_RD_EXAMPLES_T_AND_F_', '_R_CHECK_RD_LINE_WIDTHS_', '_R_CHECK_RD_MATH_RENDERING_', '_R_CHECK_RD_NOTE_LOST_BRACES_', '_R_CHECK_RD_VALIDATE_RD2HTML_', '_R_CHECK_REPLACING_IMPORTS_', '_R_CHECK_R_DEPENDS_', '_R_CHECK_S3_METHODS_SHOW_POSSIBLE_ISSUES_', '_R_CHECK_SCREEN_DEVICE_', '_R_CHECK_SERIALIZATION_', '_R_CHECK_SHLIB_OPENMP_FLAGS_', '_R_CHECK_SRC_MINUS_W_IMPLICIT_', '_R_CHECK_SUBDIRS_NOCASE_', '_R_CHECK_SUBDIRS_STRICT_', '_R_CHECK_SUGGESTS_ONLY_', '_R_CHECK_SYSTEM_CLOCK_', '_R_CHECK_TESTS_NLINES_', '_R_CHECK_TEST_TIMING_', '_R_CHECK_TIMINGS_', '_R_CHECK_TOPLEVEL_FILES_', '_R_CHECK_UNDOC_USE_ALL_NAMES_', '_R_CHECK_UNSAFE_CALLS_', '_R_CHECK_URLS_SHOW_301_STATUS_', '_R_CHECK_VC_DIRS_', '_R_CHECK_VIGNETTES_NLINES_', '_R_CHECK_VIGNETTES_SKIP_RUN_MAYBE_', '_R_CHECK_VIGNETTE_TIMING_', '_R_CHECK_VIGNETTE_TITLES_', '_R_CHECK_WINDOWS_DEVICE_', '_R_CHECK_XREFS_USE_ALIASES_FROM_CRAN_', '_R_CLASS_MATRIX_ARRAY_', '_R_INSTALL_TIME_PATCHES_', '_R_S3_METHOD_LOOKUP_BASEENV_AFTER_GLOBALENV_', '_R_SHLIB_BUILD_OBJECTS_SYMBOL_TABLES_', '__R_CHECK_DOC_FILES_NOTE_IF_ALL_SPECIAL__', 'maj.version', 'nextArg--timingsnextArg--install' - Environment variables still there: [n=0] - Environment variables missing: [n=1] 'MAKEFLAGS' Differences environment variable by environment variable: List of 3 $ name : chr "MAKEFLAGS" $ expected: 'Dlist' chr "" $ actual : 'Dlist' chr NA > > proc.time() user system elapsed 0.87 0.04 1.76