diff --git a/DESCRIPTION b/DESCRIPTION index 7623b74..d436519 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,7 +15,7 @@ Description: In computationally demanding analysis projects, 'clustermq' by Schubert (2019) ), and 'batchtools' by Lang, Bischl, and Surmann (2017). . -Version: 0.1.1.9001 +Version: 0.1.2 License: MIT + file LICENSE URL: https://wlandau.github.io/crew.cluster/, https://github.com/wlandau/crew.cluster @@ -42,7 +42,7 @@ Authors@R: c( Depends: R (>= 4.0.0) Imports: - crew (>= 0.4.0), + crew (>= 0.5.0), lifecycle, R6, rlang, diff --git a/NAMESPACE b/NAMESPACE index f1a2846..b2be0ed 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -19,6 +19,7 @@ importFrom(crew,crew_assert) importFrom(crew,crew_class_launcher) importFrom(crew,crew_launcher) importFrom(crew,crew_random_name) +importFrom(crew,crew_tls) importFrom(lifecycle,badge) importFrom(rlang,is_installed) importFrom(utils,globalVariables) diff --git a/NEWS.md b/NEWS.md index 560ecf1..6875e97 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,9 +1,10 @@ -# crew.cluster 0.1.1.9001 (development) +# crew.cluster 0.1.2 -* Require `crew` >= 0.4.0. +* Require `crew` >= 0.5.0. * Add a new `slurm_time_minutes` for SLURM wall time (#1, @cfljam). * Enable TLS. -* Use MB format for memory in SLURM launcher (#22, @kendonB). +* Use MB format for memory in SLURM launcher (#22, @kendonB). +* Use `launch_max` and `crew_tls()` from `crew` 0.5.0. # crew.cluster 0.1.1 diff --git a/R/crew_controller_lsf.R b/R/crew_controller_lsf.R index d5b7531..c0b3e4e 100644 --- a/R/crew_controller_lsf.R +++ b/R/crew_controller_lsf.R @@ -26,7 +26,8 @@ crew_controller_lsf <- function( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -40,6 +41,7 @@ crew_controller_lsf <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("bsub")), command_delete = as.character(Sys.which("bkill")), @@ -57,6 +59,7 @@ crew_controller_lsf <- function( workers = workers, host = host, port = port, + tls = tls, tls_enable = tls_enable, tls_config = tls_config, seconds_interval = seconds_interval, @@ -75,6 +78,8 @@ crew_controller_lsf <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_controller_pbs.R b/R/crew_controller_pbs.R index 3f20075..7c815d2 100644 --- a/R/crew_controller_pbs.R +++ b/R/crew_controller_pbs.R @@ -22,7 +22,8 @@ crew_controller_pbs <- function( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -36,6 +37,7 @@ crew_controller_pbs <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -54,6 +56,7 @@ crew_controller_pbs <- function( workers = workers, host = host, port = port, + tls = tls, tls_enable = tls_enable, tls_config = tls_config, seconds_interval = seconds_interval, @@ -72,6 +75,8 @@ crew_controller_pbs <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_controller_sge.R b/R/crew_controller_sge.R index 5837fd8..8c20f32 100644 --- a/R/crew_controller_sge.R +++ b/R/crew_controller_sge.R @@ -22,7 +22,8 @@ crew_controller_sge <- function( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -36,6 +37,7 @@ crew_controller_sge <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -56,6 +58,7 @@ crew_controller_sge <- function( workers = workers, host = host, port = port, + tls = tls, tls_enable = tls_enable, tls_config = tls_config, seconds_interval = seconds_interval, @@ -74,6 +77,8 @@ crew_controller_sge <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_controller_slurm.R b/R/crew_controller_slurm.R index ee4cefa..cf3ec6d 100644 --- a/R/crew_controller_slurm.R +++ b/R/crew_controller_slurm.R @@ -26,7 +26,8 @@ crew_controller_slurm <- function( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -40,6 +41,7 @@ crew_controller_slurm <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("sbatch")), command_delete = as.character(Sys.which("scancel")), @@ -56,6 +58,7 @@ crew_controller_slurm <- function( workers = workers, host = host, port = port, + tls = tls, tls_enable = tls_enable, tls_config = tls_config, seconds_interval = seconds_interval, @@ -74,6 +77,8 @@ crew_controller_slurm <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_launcher_cluster.R b/R/crew_launcher_cluster.R index d193c17..fcd496e 100644 --- a/R/crew_launcher_cluster.R +++ b/R/crew_launcher_cluster.R @@ -44,6 +44,8 @@ crew_launcher_cluster <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = "", command_delete = "", @@ -64,6 +66,8 @@ crew_launcher_cluster <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, @@ -111,6 +115,8 @@ crew_class_launcher_cluster <- R6::R6Class( #' @param reset_packages See [crew_launcher_cluster()]. #' @param reset_options See [crew_launcher_cluster()]. #' @param garbage_collection See [crew_launcher_cluster()]. + #' @param launch_max See [crew_launcher_cluster()]. + #' @param tls See [crew_launcher_cluster()]. #' @param verbose See [crew_launcher_cluster()]. #' @param command_submit See [crew_launcher_cluster()]. #' @param command_delete See [crew_launcher_cluster()]. @@ -129,6 +135,8 @@ crew_class_launcher_cluster <- R6::R6Class( reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -147,7 +155,9 @@ crew_class_launcher_cluster <- R6::R6Class( reset_globals = reset_globals, reset_packages = reset_packages, reset_options = reset_options, - garbage_collection = garbage_collection + garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls ) self$verbose <- verbose self$command_submit <- command_submit diff --git a/R/crew_launcher_lsf.R b/R/crew_launcher_lsf.R index e27bcbc..d30ab00 100644 --- a/R/crew_launcher_lsf.R +++ b/R/crew_launcher_lsf.R @@ -68,6 +68,8 @@ crew_launcher_lsf <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("bsub")), command_delete = as.character(Sys.which("bkill")), @@ -94,6 +96,8 @@ crew_launcher_lsf <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, @@ -147,6 +151,8 @@ crew_class_launcher_lsf <- R6::R6Class( #' @param reset_packages See [crew_launcher_lsf()]. #' @param reset_options See [crew_launcher_lsf()]. #' @param garbage_collection See [crew_launcher_lsf()]. + #' @param launch_max See [crew_launcher_lsf()]. + #' @param tls See [crew_launcher_lsf()]. #' @param verbose See [crew_launcher_lsf()]. #' @param command_submit See [crew_launcher_lsf()]. #' @param command_delete See [crew_launcher_lsf()]. @@ -171,6 +177,8 @@ crew_class_launcher_lsf <- R6::R6Class( reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -196,6 +204,8 @@ crew_class_launcher_lsf <- R6::R6Class( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_launcher_pbs.R b/R/crew_launcher_pbs.R index 21047bd..c817418 100644 --- a/R/crew_launcher_pbs.R +++ b/R/crew_launcher_pbs.R @@ -73,6 +73,8 @@ crew_launcher_pbs <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -100,6 +102,8 @@ crew_launcher_pbs <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, @@ -156,6 +160,8 @@ crew_class_launcher_pbs <- R6::R6Class( #' @param reset_packages See [crew_launcher_pbs()]. #' @param reset_options See [crew_launcher_pbs()]. #' @param garbage_collection See [crew_launcher_pbs()]. + #' @param launch_max See [crew_launcher_pbs()]. + #' @param tls See [crew_launcher_pbs()]. #' @param verbose See [crew_launcher_pbs()]. #' @param command_submit See [crew_launcher_pbs()]. #' @param command_delete See [crew_launcher_pbs()]. @@ -181,6 +187,8 @@ crew_class_launcher_pbs <- R6::R6Class( reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -207,6 +215,8 @@ crew_class_launcher_pbs <- R6::R6Class( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_launcher_sge.R b/R/crew_launcher_sge.R index 027e9c3..d3cac60 100644 --- a/R/crew_launcher_sge.R +++ b/R/crew_launcher_sge.R @@ -75,6 +75,8 @@ crew_launcher_sge <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -104,6 +106,8 @@ crew_launcher_sge <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, @@ -166,6 +170,8 @@ crew_class_launcher_sge <- R6::R6Class( #' @param reset_packages See [crew_launcher_sge()]. #' @param reset_options See [crew_launcher_sge()]. #' @param garbage_collection See [crew_launcher_sge()]. + #' @param launch_max See [crew_launcher_sge()]. + #' @param tls See [crew_launcher_sge()]. #' @param verbose See [crew_launcher_sge()]. #' @param command_submit See [crew_launcher_sge()]. #' @param command_delete See [crew_launcher_sge()]. @@ -193,6 +199,8 @@ crew_class_launcher_sge <- R6::R6Class( reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -221,6 +229,8 @@ crew_class_launcher_sge <- R6::R6Class( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_launcher_slurm.R b/R/crew_launcher_slurm.R index 553bbb6..296fc50 100644 --- a/R/crew_launcher_slurm.R +++ b/R/crew_launcher_slurm.R @@ -62,6 +62,8 @@ crew_launcher_slurm <- function( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("sbatch")), command_delete = as.character(Sys.which("scancel")), @@ -87,6 +89,8 @@ crew_launcher_slurm <- function( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, @@ -137,6 +141,8 @@ crew_class_launcher_slurm <- R6::R6Class( #' @param reset_packages See [crew_launcher_slurm()]. #' @param reset_options See [crew_launcher_slurm()]. #' @param garbage_collection See [crew_launcher_slurm()]. + #' @param launch_max See [crew_launcher_slurm()]. + #' @param tls See [crew_launcher_slurm()]. #' @param verbose See [crew_launcher_slurm()]. #' @param command_submit See [crew_launcher_sge()]. #' @param command_delete See [crew_launcher_sge()]. @@ -160,6 +166,8 @@ crew_class_launcher_slurm <- R6::R6Class( reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -184,6 +192,8 @@ crew_class_launcher_slurm <- R6::R6Class( reset_packages = reset_packages, reset_options = reset_options, garbage_collection = garbage_collection, + launch_max = launch_max, + tls = tls, verbose = verbose, command_submit = command_submit, command_delete = command_delete, diff --git a/R/crew_package.R b/R/crew_package.R index 8cd76d7..7a735db 100644 --- a/R/crew_package.R +++ b/R/crew_package.R @@ -28,7 +28,7 @@ #' See the `NOTICE` and `README.md` files in the `crew.cluster` #' source code for additional attribution. #' @importFrom crew crew_assert crew_class_launcher crew_launcher -#' crew_random_name +#' crew_random_name crew_tls #' @importFrom lifecycle badge #' @importFrom R6 R6Class #' @importFrom rlang is_installed diff --git a/man/crew_class_launcher_cluster.Rd b/man/crew_class_launcher_cluster.Rd index 37f8a1c..fd4407d 100644 --- a/man/crew_class_launcher_cluster.Rd +++ b/man/crew_class_launcher_cluster.Rd @@ -104,6 +104,8 @@ Abstract launcher constructor. reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -139,6 +141,10 @@ Abstract launcher constructor. \item{\code{garbage_collection}}{See \code{\link[=crew_launcher_cluster]{crew_launcher_cluster()}}.} +\item{\code{launch_max}}{See \code{\link[=crew_launcher_cluster]{crew_launcher_cluster()}}.} + +\item{\code{tls}}{See \code{\link[=crew_launcher_cluster]{crew_launcher_cluster()}}.} + \item{\code{verbose}}{See \code{\link[=crew_launcher_cluster]{crew_launcher_cluster()}}.} \item{\code{command_submit}}{See \code{\link[=crew_launcher_cluster]{crew_launcher_cluster()}}.} diff --git a/man/crew_class_launcher_lsf.Rd b/man/crew_class_launcher_lsf.Rd index 2e4e606..8a6951e 100644 --- a/man/crew_class_launcher_lsf.Rd +++ b/man/crew_class_launcher_lsf.Rd @@ -121,6 +121,8 @@ LSF launcher constructor. reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -162,6 +164,10 @@ LSF launcher constructor. \item{\code{garbage_collection}}{See \code{\link[=crew_launcher_lsf]{crew_launcher_lsf()}}.} +\item{\code{launch_max}}{See \code{\link[=crew_launcher_lsf]{crew_launcher_lsf()}}.} + +\item{\code{tls}}{See \code{\link[=crew_launcher_lsf]{crew_launcher_lsf()}}.} + \item{\code{verbose}}{See \code{\link[=crew_launcher_lsf]{crew_launcher_lsf()}}.} \item{\code{command_submit}}{See \code{\link[=crew_launcher_lsf]{crew_launcher_lsf()}}.} diff --git a/man/crew_class_launcher_pbs.Rd b/man/crew_class_launcher_pbs.Rd index ed24373..dd988a3 100644 --- a/man/crew_class_launcher_pbs.Rd +++ b/man/crew_class_launcher_pbs.Rd @@ -121,6 +121,8 @@ PBS/TORQUE launcher constructor. reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -163,6 +165,10 @@ PBS/TORQUE launcher constructor. \item{\code{garbage_collection}}{See \code{\link[=crew_launcher_pbs]{crew_launcher_pbs()}}.} +\item{\code{launch_max}}{See \code{\link[=crew_launcher_pbs]{crew_launcher_pbs()}}.} + +\item{\code{tls}}{See \code{\link[=crew_launcher_pbs]{crew_launcher_pbs()}}.} + \item{\code{verbose}}{See \code{\link[=crew_launcher_pbs]{crew_launcher_pbs()}}.} \item{\code{command_submit}}{See \code{\link[=crew_launcher_pbs]{crew_launcher_pbs()}}.} diff --git a/man/crew_class_launcher_sge.Rd b/man/crew_class_launcher_sge.Rd index b2a6d2e..54aa6cd 100644 --- a/man/crew_class_launcher_sge.Rd +++ b/man/crew_class_launcher_sge.Rd @@ -125,6 +125,8 @@ SGE launcher constructor. reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -169,6 +171,10 @@ SGE launcher constructor. \item{\code{garbage_collection}}{See \code{\link[=crew_launcher_sge]{crew_launcher_sge()}}.} +\item{\code{launch_max}}{See \code{\link[=crew_launcher_sge]{crew_launcher_sge()}}.} + +\item{\code{tls}}{See \code{\link[=crew_launcher_sge]{crew_launcher_sge()}}.} + \item{\code{verbose}}{See \code{\link[=crew_launcher_sge]{crew_launcher_sge()}}.} \item{\code{command_submit}}{See \code{\link[=crew_launcher_sge]{crew_launcher_sge()}}.} diff --git a/man/crew_class_launcher_slurm.Rd b/man/crew_class_launcher_slurm.Rd index fd9d86e..d3b94fc 100644 --- a/man/crew_class_launcher_slurm.Rd +++ b/man/crew_class_launcher_slurm.Rd @@ -118,6 +118,8 @@ SLURM launcher constructor. reset_packages = NULL, reset_options = NULL, garbage_collection = NULL, + launch_max = NULL, + tls = NULL, verbose = NULL, command_submit = NULL, command_delete = NULL, @@ -158,6 +160,10 @@ SLURM launcher constructor. \item{\code{garbage_collection}}{See \code{\link[=crew_launcher_slurm]{crew_launcher_slurm()}}.} +\item{\code{launch_max}}{See \code{\link[=crew_launcher_slurm]{crew_launcher_slurm()}}.} + +\item{\code{tls}}{See \code{\link[=crew_launcher_slurm]{crew_launcher_slurm()}}.} + \item{\code{verbose}}{See \code{\link[=crew_launcher_slurm]{crew_launcher_slurm()}}.} \item{\code{command_submit}}{See \code{\link[=crew_launcher_sge]{crew_launcher_sge()}}.} diff --git a/man/crew_controller_lsf.Rd b/man/crew_controller_lsf.Rd index cadc109..b6e19ea 100644 --- a/man/crew_controller_lsf.Rd +++ b/man/crew_controller_lsf.Rd @@ -10,7 +10,8 @@ crew_controller_lsf( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -24,6 +25,7 @@ crew_controller_lsf( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("bsub")), command_delete = as.character(Sys.which("bkill")), @@ -49,32 +51,13 @@ If \code{NULL}, the host defaults to the local IP address.} \item{port}{TCP port to listen for the workers. If \code{NULL}, then an available ephemeral port is automatically chosen.} -\item{tls_enable}{Logical of length 1, whether to use transport layer -security (TLS) to secure connections between the client and workers. -Only supported for \code{mirai} version 0.9.0.9020 and above and -\code{nanonext} version 0.9.0.9034 and above. -Uses an automatically generated one-time self-signed certificate by -default. To guard against man-in-the-middle attacks, consider -generating a one-time certificate yourself, requesting a trusted -certificate authority (CA) to sign it, and then supplying the -keys to the \code{tls_config} argument. Enabling TLS requires \code{mirai} -version 0.9.0.9027 or above, and a \code{NULL} value for \code{tls_enable} -will enable TLS if and only if the \code{mirai} version is sufficient.} - -\item{tls_config}{Optional and only relevant if TLS is enabled -(see the \code{tls_config} argument). The \code{tls_config} argument -controls how transport layer security (TLS) is configured, -and it is directly forwarded to the \code{tls} argument of -\code{mirai::daemons()}. If \code{tls_config} is \code{NULL}, -then \code{mirai} will generate a one-time -self-signed certificate. This default approach is protects against -the simplest attempts at packet sniffing, but it is still vulnerable -to man-in-the-middle attacks. When greater security is required, -consider generating a PEM-encoded certificate and associated -private key yourself and using a trusted certificate authority (CA) -to sign the former. The documentation of \code{mirai}, including the -\code{tls} arguments of the \code{mirai::daemons()} and \code{mirai::daemon()} -functions, has more details.} +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + +\item{tls_enable}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} + +\item{tls_config}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} \item{seconds_interval}{Number of seconds between polling intervals waiting for certain internal @@ -135,6 +118,16 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_controller_pbs.Rd b/man/crew_controller_pbs.Rd index 5768d65..791d6af 100644 --- a/man/crew_controller_pbs.Rd +++ b/man/crew_controller_pbs.Rd @@ -10,7 +10,8 @@ crew_controller_pbs( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -24,6 +25,7 @@ crew_controller_pbs( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -50,32 +52,13 @@ If \code{NULL}, the host defaults to the local IP address.} \item{port}{TCP port to listen for the workers. If \code{NULL}, then an available ephemeral port is automatically chosen.} -\item{tls_enable}{Logical of length 1, whether to use transport layer -security (TLS) to secure connections between the client and workers. -Only supported for \code{mirai} version 0.9.0.9020 and above and -\code{nanonext} version 0.9.0.9034 and above. -Uses an automatically generated one-time self-signed certificate by -default. To guard against man-in-the-middle attacks, consider -generating a one-time certificate yourself, requesting a trusted -certificate authority (CA) to sign it, and then supplying the -keys to the \code{tls_config} argument. Enabling TLS requires \code{mirai} -version 0.9.0.9027 or above, and a \code{NULL} value for \code{tls_enable} -will enable TLS if and only if the \code{mirai} version is sufficient.} - -\item{tls_config}{Optional and only relevant if TLS is enabled -(see the \code{tls_config} argument). The \code{tls_config} argument -controls how transport layer security (TLS) is configured, -and it is directly forwarded to the \code{tls} argument of -\code{mirai::daemons()}. If \code{tls_config} is \code{NULL}, -then \code{mirai} will generate a one-time -self-signed certificate. This default approach is protects against -the simplest attempts at packet sniffing, but it is still vulnerable -to man-in-the-middle attacks. When greater security is required, -consider generating a PEM-encoded certificate and associated -private key yourself and using a trusted certificate authority (CA) -to sign the former. The documentation of \code{mirai}, including the -\code{tls} arguments of the \code{mirai::daemons()} and \code{mirai::daemon()} -functions, has more details.} +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + +\item{tls_enable}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} + +\item{tls_config}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} \item{seconds_interval}{Number of seconds between polling intervals waiting for certain internal @@ -136,6 +119,16 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_controller_sge.Rd b/man/crew_controller_sge.Rd index 1db4ace..1c67c56 100644 --- a/man/crew_controller_sge.Rd +++ b/man/crew_controller_sge.Rd @@ -10,7 +10,8 @@ crew_controller_sge( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -24,6 +25,7 @@ crew_controller_sge( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -52,32 +54,13 @@ If \code{NULL}, the host defaults to the local IP address.} \item{port}{TCP port to listen for the workers. If \code{NULL}, then an available ephemeral port is automatically chosen.} -\item{tls_enable}{Logical of length 1, whether to use transport layer -security (TLS) to secure connections between the client and workers. -Only supported for \code{mirai} version 0.9.0.9020 and above and -\code{nanonext} version 0.9.0.9034 and above. -Uses an automatically generated one-time self-signed certificate by -default. To guard against man-in-the-middle attacks, consider -generating a one-time certificate yourself, requesting a trusted -certificate authority (CA) to sign it, and then supplying the -keys to the \code{tls_config} argument. Enabling TLS requires \code{mirai} -version 0.9.0.9027 or above, and a \code{NULL} value for \code{tls_enable} -will enable TLS if and only if the \code{mirai} version is sufficient.} - -\item{tls_config}{Optional and only relevant if TLS is enabled -(see the \code{tls_config} argument). The \code{tls_config} argument -controls how transport layer security (TLS) is configured, -and it is directly forwarded to the \code{tls} argument of -\code{mirai::daemons()}. If \code{tls_config} is \code{NULL}, -then \code{mirai} will generate a one-time -self-signed certificate. This default approach is protects against -the simplest attempts at packet sniffing, but it is still vulnerable -to man-in-the-middle attacks. When greater security is required, -consider generating a PEM-encoded certificate and associated -private key yourself and using a trusted certificate authority (CA) -to sign the former. The documentation of \code{mirai}, including the -\code{tls} arguments of the \code{mirai::daemons()} and \code{mirai::daemon()} -functions, has more details.} +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + +\item{tls_enable}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} + +\item{tls_config}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} \item{seconds_interval}{Number of seconds between polling intervals waiting for certain internal @@ -138,6 +121,16 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_controller_slurm.Rd b/man/crew_controller_slurm.Rd index 64183ba..c575dc4 100644 --- a/man/crew_controller_slurm.Rd +++ b/man/crew_controller_slurm.Rd @@ -10,7 +10,8 @@ crew_controller_slurm( workers = 1L, host = NULL, port = NULL, - tls_enable = FALSE, + tls = crew::crew_tls(), + tls_enable = NULL, tls_config = NULL, seconds_interval = 0.25, seconds_timeout = 10, @@ -24,6 +25,7 @@ crew_controller_slurm( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, verbose = FALSE, command_submit = as.character(Sys.which("sbatch")), command_delete = as.character(Sys.which("scancel")), @@ -48,32 +50,13 @@ If \code{NULL}, the host defaults to the local IP address.} \item{port}{TCP port to listen for the workers. If \code{NULL}, then an available ephemeral port is automatically chosen.} -\item{tls_enable}{Logical of length 1, whether to use transport layer -security (TLS) to secure connections between the client and workers. -Only supported for \code{mirai} version 0.9.0.9020 and above and -\code{nanonext} version 0.9.0.9034 and above. -Uses an automatically generated one-time self-signed certificate by -default. To guard against man-in-the-middle attacks, consider -generating a one-time certificate yourself, requesting a trusted -certificate authority (CA) to sign it, and then supplying the -keys to the \code{tls_config} argument. Enabling TLS requires \code{mirai} -version 0.9.0.9027 or above, and a \code{NULL} value for \code{tls_enable} -will enable TLS if and only if the \code{mirai} version is sufficient.} - -\item{tls_config}{Optional and only relevant if TLS is enabled -(see the \code{tls_config} argument). The \code{tls_config} argument -controls how transport layer security (TLS) is configured, -and it is directly forwarded to the \code{tls} argument of -\code{mirai::daemons()}. If \code{tls_config} is \code{NULL}, -then \code{mirai} will generate a one-time -self-signed certificate. This default approach is protects against -the simplest attempts at packet sniffing, but it is still vulnerable -to man-in-the-middle attacks. When greater security is required, -consider generating a PEM-encoded certificate and associated -private key yourself and using a trusted certificate authority (CA) -to sign the former. The documentation of \code{mirai}, including the -\code{tls} arguments of the \code{mirai::daemons()} and \code{mirai::daemon()} -functions, has more details.} +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + +\item{tls_enable}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} + +\item{tls_config}{Deprecated on 2023-09-15 in version 0.4.1. +Use argument \code{tls} instead.} \item{seconds_interval}{Number of seconds between polling intervals waiting for certain internal @@ -134,6 +117,16 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_launcher_cluster.Rd b/man/crew_launcher_cluster.Rd index 9538a3b..54aa99e 100644 --- a/man/crew_launcher_cluster.Rd +++ b/man/crew_launcher_cluster.Rd @@ -18,6 +18,8 @@ crew_launcher_cluster( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = "", command_delete = "", @@ -80,6 +82,18 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_launcher_lsf.Rd b/man/crew_launcher_lsf.Rd index 53f974e..4091c6d 100644 --- a/man/crew_launcher_lsf.Rd +++ b/man/crew_launcher_lsf.Rd @@ -18,6 +18,8 @@ crew_launcher_lsf( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("bsub")), command_delete = as.character(Sys.which("bkill")), @@ -86,6 +88,18 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_launcher_pbs.Rd b/man/crew_launcher_pbs.Rd index 04ada53..1677ef6 100644 --- a/man/crew_launcher_pbs.Rd +++ b/man/crew_launcher_pbs.Rd @@ -18,6 +18,8 @@ crew_launcher_pbs( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -87,6 +89,18 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_launcher_sge.Rd b/man/crew_launcher_sge.Rd index 1e67269..84f570a 100644 --- a/man/crew_launcher_sge.Rd +++ b/man/crew_launcher_sge.Rd @@ -18,6 +18,8 @@ crew_launcher_sge( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("qsub")), command_delete = as.character(Sys.which("qdel")), @@ -89,6 +91,18 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.} diff --git a/man/crew_launcher_slurm.Rd b/man/crew_launcher_slurm.Rd index 7157521..318cff4 100644 --- a/man/crew_launcher_slurm.Rd +++ b/man/crew_launcher_slurm.Rd @@ -18,6 +18,8 @@ crew_launcher_slurm( reset_packages = FALSE, reset_options = FALSE, garbage_collection = FALSE, + launch_max = 5L, + tls = crew::crew_tls(), verbose = FALSE, command_submit = as.character(Sys.which("sbatch")), command_delete = as.character(Sys.which("scancel")), @@ -85,6 +87,18 @@ because packages sometimes rely on options they set at loading time.} \item{garbage_collection}{\code{TRUE} to run garbage collection between tasks, \code{FALSE} to skip.} +\item{launch_max}{Positive integer of length 1, maximum allowed +consecutive launch attempts which do not complete any tasks. +Enforced on a worker-by-worker basis. +The futile launch count resets to back 0 +for each worker that completes a task. +It is recommended to set \code{launch_max} above 0 +because sometimes workers are unproductive under perfectly ordinary +circumstances. But \code{launch_max} should still be small enough +to detect errors in the underlying platform.} + +\item{tls}{A TLS configuration object from \code{\link[crew:crew_tls]{crew_tls()}}.} + \item{verbose}{Logical, whether to see console output and error messages when submitting worker.}