Check whether or not the cluster nodes are alive

isNodeAlive(x, ...)

## Arguments

x

A cluster or a cluster node ("worker").

...

Not used.

## Value

A logical vector of length length(x) with values FALSE, TRUE, and NA. If it can be established that the process for a cluster node is running, then TRUE is returned. If it does not run, then FALSE is returned. If neither can be inferred, for instance because the worker runs on a remote machine, then NA is returned.

## Details

This function works by checking whether the cluster node process is running or not. This is done by querying the system for its process ID (PID), which is registered by makeClusterPSOCK() when the node starts. If the PID is not known, the NA is returned. On Unix and macOS, the PID is queried using tools::pskill() with fallback to system("ps"). On MS Windows, system2("tasklist") is used, which may take a long time if there are a lot of processes running. For details, see the internal pid_exists() function.

Use parallel::stopCluster() to shut down cluster nodes. If that's not sufficient, killNode() may be attempted.

## Examples

# \donttest{
cl <- makeClusterPSOCK(2)

## Check if cluster nodes #2 is alive
print(isNodeAlive(cl[[2]]))
#> [1] TRUE

## Check all nodes
print(isNodeAlive(cl))
#> [1] TRUE TRUE
# }