The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Detached sessions allow you to start long-running computations in AWS, safely close your R session, and reattach later to check progress and collect results.
For analyses that take hours or days:
library(starburst)
# Create a detached session (EC2 workers with Spot by default)
session <- starburst_session(
workers = 10,
cpu = 4,
memory = "8GB"
)
# Submit tasks
task_ids <- lapply(1:100, function(i) {
session$submit(quote({
# Your long-running computation
result <- expensive_analysis(i)
result
}))
})
# Save session ID for later
session_id <- session$session_id
print(session_id) # "session-abc123..."Close R and come back later:
# Session 1: Start work
session <- starburst_session(workers = 20)
lapply(1:1000, function(i) session$submit(quote(slow_computation(i))))
session_id <- session$session_id
# Close R, go home, come back tomorrow...
# Session 2: Reattach
session <- starburst_session_attach(session_id)
status <- session$status()
results <- session$collect()Sessions use EC2 with Spot instances by default — no
extra arguments needed. You can tune the instance type, or opt into
Fargate. A non-default instance type is provisioned automatically on
first use (a one-time ~1–2 min step), or run
starburst_setup_ec2(instance_types = "c8a.xlarge") once to
pre-provision it.
# Default is already EC2 + Spot (c7g.xlarge); override the instance type if you like
session <- starburst_session(
workers = 50,
instance_type = "c8a.xlarge", # AMD 8th gen; auto-provisioned on first use
use_spot = TRUE # default TRUE — ~70% cheaper
)
# Opt into the Fargate backend (serverless, task-based) instead
session <- starburst_session(
workers = 50,
launch_type = "FARGATE"
)# Tasks that fail are tracked, not silently dropped
session <- starburst_session(workers = 5)
task_ids <- lapply(1:10, function(i) {
session$submit(quote({
if (i == 5) stop("Intentional error")
i * 2
}), globals = list(i = i))
})
# Check status
status <- session$status()
print(status) # Failed: 1
# collect() returns an entry for EVERY task, keyed by task id. A failed task
# comes back as a structured failure (error = TRUE) alongside the successes.
results <- session$collect(wait = TRUE)
# Separate successes from failures
failures <- Filter(function(r) isTRUE(r$error), results)
length(failures) # 1
print(failures[[1]]$message) # "Intentional error"
# Successful values are the non-error entries
successes <- Filter(function(r) !isTRUE(r$error), results)Collect results as they complete:
session <- starburst_session(workers = 10)
# Submit mix of fast and slow tasks
lapply(1:5, function(i) session$submit(quote(i * 2))) # Fast
lapply(1:5, function(i) session$submit(quote({ Sys.sleep(60); i }))) # Slow
Sys.sleep(10)
# Get fast results immediately
results <- session$collect(wait = FALSE)
length(results) # 5 (fast tasks done)
# Later, get remaining results
Sys.sleep(60)
results <- session$collect(wait = FALSE)
length(results) # 10 (all done)pending → claimed → running → completed
↓
failed
Each state transition is recorded in S3 with timestamps.
✅ Good use cases: - Long-running analyses (hours to days) - Computations you want to monitor remotely - Jobs that might exceed your local R session lifetime - Analyses you want to inspect partially before completion
❌ Not ideal for: - Quick computations (< 5 minutes) - Interactive workflows requiring immediate feedback - Tasks with millisecond-level coordination requirements
| Feature | Ephemeral (plan(starburst)) |
Detached (starburst_session()) |
|---|---|---|
| R session required | Yes - must stay open | No - can close and reattach |
| State persistence | In-memory only | S3-backed |
| Max duration | R session lifetime | Days (configurable) |
| Progress monitoring | Local variables | session$status() |
| Worker behavior | One task per worker | Workers poll for tasks |
| Best for | Quick parallel jobs | Long-running analyses |
library(starburst)
# Process 1000 samples overnight
session <- starburst_session(
workers = 100,
cpu = 8,
memory = "32GB",
launch_type = "EC2",
use_spot = TRUE
)
# Submit all samples
sample_files <- list.files("samples/", pattern = "*.fastq")
task_ids <- lapply(sample_files, function(file) {
session$submit(quote({
library(Rsubread)
results <- align_and_quantify(file)
save_results(results, file)
results
}))
})
# Check progress next morning
session <- starburst_session_attach(session$session_id)
status <- session$status()
# Completed: 950, Running: 45, Failed: 5
results <- session$collect(wait = TRUE)# Run 10,000 simulations
session <- starburst_session(workers = 50)
n_sims <- 10000
lapply(1:n_sims, function(i) {
session$submit(quote({
set.seed(i)
run_simulation()
}))
})
# Check progress periodically
repeat {
status <- session$status()
print(sprintf("Progress: %.1f%%", 100 * status$completed / status$total))
if (status$completed == n_sims) break
Sys.sleep(60)
}
results <- session$collect()?starburst_session - Create detached session?starburst_session_attach - Reattach to session?starburst_list_sessions - List all sessionsvignette("staRburst") - General usage guideThese binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.