Releases: wlandau/crew
Releases · wlandau/crew
Migrate to mirai 1.0.0
crew 1.0.0
- Avoid partial match in a call to
crew_terminate_process()
. - Migrate to
mirai
2.0.0 with the pair 1 poly protocol (#193). Most notably, all workers now share the same URL instead of having different web sockets for different workers. This gets rid ofcrew
's previous "slotted" model for workers. - Prohibit duplicated task names in
push()
. (The task must be popped first before another task of the same name can be submitted.) This allows controllers to use hash tables to track tasks, which makespush()
andpop()
orders of magnitude faster. It is also needed for the new retry mechanism based on backup controllers and controller groups. - Use exponential backoff in throttles.
- Share throttles between
scale()
andwait()
to increase responsiveness. - Use a unified throttle for controller groups, which requires refactoring
wait(mode = "all")
for controller groups. - Name every task and record every command.
- Switch URLs from
ws://
(andwss://
) totcp://
(andtls+tcp://
) (#193). - Change R-level error status code to -1 (previously 1).
- Add a queue class for resolved tasks to make
pop()
andcollect()
more efficient.pop()
is 64 times faster. - For clarity, rename the
"launcher"
column of the results to"controller"
. - Log crashes and cancellations separately from ordinary errors in
summary()
.
Improved crash detection
crew 0.10.2
- Eliminate spurious
launch_max
error from underutilized workers (#189). - Deprecate
launch_max
in favor ofcrashes_error
(#189). - Look for crashes of all workers in
rotate()
instead of looking for crashes of a specific worker inlaunch()
(#189). - Add a
crashes()
launcher method to allow plugins to detect and respond to crashes more easily. - Change default
seconds_idle
to 300. - Move
autometric
toSuggests:
.
Resource logging with autometric
crew 0.10.0
- Give full worker name in the worker launch error message (@multimeric).
- Start the controller automatically in more methods.
- Add an
r_arguments
argument to supply command line arguments to R for workers (#175, @rpruim). - Add a
cancel()
controller method to cancel one or more tasks. - Call
cancel(all = TRUE)
fromterminate()
as a safeguard. - Make
client$dispatcher
aps::ps_handle()
handle and add a newclient$client
handle for the current process. - To passively log memory usage when
log_resources
is given, the controller now callslog()
as a side effect in most controller methods, with throttling to preserve speed. - Return a status and status code from
pop()
etc. - New internal function
as_monad()
makes error reporting more consistent. - Use
path.expand()
on local log files. - Switch to
Rscript
. - Print session info from
crew_worker()
before attempting to dial intomirai
. - Add
asyncdial = FALSE
back tomirai::daemon()
call. - Deprecate
local_log_directory
andlocal_log_join
in favor ofcrew_options_local()
and theoptions_local
argument. - Add
crew_options_metrics()
and theoptions_metrics
argument for recording resource metrics (#178). - Add a new
logging.Rmd
vignette to explain best practices for logging and resource usage metrics (#178).
CRAN patch
crew 0.9.5
- CRAN patch.
simplified Shiny/promises docs
crew 0.9.4
- Do not use extended tasks in Shiny vignette.
- Add a new
retry_tasks
argument with defaultTRUE
(#170). - Avoid Base64 encoding functions from
nanonext
Delegate promises
minor patch
crew 0.9.2
- Use
.args
rather than...
inmirai::mirai()
to make sure arguments continue to be passed as local variables inmirai
>= 0.13.1.9012. - Add new controller methods
autoscale()
,descale()
, andstarted()
to facilitate different kinds of Shiny apps. - Deprecate the
scale
andthrottle
methods ofcontroller$promise()
.promise()
now always callsautoscale()
to make sure one and only one auto-scaling loop is running asynchronously. Auto-scaling thus continues even after the promise resolves. - Add a second example vignette that simulates coin flips.
- Add a new
error
argument tocollect()
(#166).
Shiny-related improvements
crew 0.9.1
- Rewrite the async Shiny vignette with
crew
promises and Shiny extended tasks (#157, @jcheng5). - Clarify the intent of
controller$promise(mode = "one")
in the vignette on promises (@jcheng5). - Implement an
error
argument inpop()
which may help with integration withExtendedTask
(@jcheng5). - Handle task errors in the Shiny vignette (@jcheng5).
Promises and backlogged task management for {targets}
crew 0.9.0
- Require
nanonext
>= 0.12.0 andmirai
>= 0.12.0. - Return to always re-launching backlogged inactive workers (#79, shikokuchuo/mirai#95).
- Implement
push_backlog()
andpop_backlog()
to manage cases when it is not desirable to push to saturated controllers (ropensci/targets#1220). - Invisibly return the
mirai
object of a task pushed to the controller. This allows users to interact with the task directly, e.g. to create a promise object withpromises::as.promise()
(#146, @jcheng5). - Add a new
walk()
method for controllers and controller groups to submit tasks in batch and return control immediately without waiting for any task to complete (#148, @jcheng5). - Revive the
collect()
method for popping multiple tasks at once (#148, @jcheng5). - Add controller group methods
nonempty()
,resolved()
,unresolved()
, andunpopped()
to help with #148. - Make the
mirai
dispatcher error message extremely verbose.
Vital safety for workers using SIGTERM
- Configure workers to send themselves a termination signal if the connection to the dispatcher is broken (#141, @psychelzh). Huge thanks to @shikokuchuo for the support through shikokuchuo/mirai#87, shikokuchuo/mirai#88, and shikokuchuo/nanonext#25! The signal itself is platform-dependent and determined by the new function
crew_terminate_signal()
. - Implement
crew_monitor_local()
to help users monitor and terminate local R processes created bycrew
andmirai
. - Implement new utility function
crew_terminate_process()
to terminate a process manually without resorting toSIGKILL
on Windows. - Throw a warning from
controller$map()
if at least one task threw one.warnings = FALSE
suppresses this behavior. - Set
output = TRUE
indaemon()
sostdout
andstderr
streams print. - Add new arguments
local_log_directory
andlocal_log_join
to write to local log files.