Skip to content

Commit

Permalink
Add warning about new workers not sharing prior global state (JuliaLa…
Browse files Browse the repository at this point in the history
…ng#14)

Originally proposed in JuliaLang/julia#50843
  • Loading branch information
evetion authored and samtkaplan committed Feb 14, 2024
1 parent 41c0106 commit 93556d2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/cluster.jl
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ mutable struct WorkerConfig
end
end

@enum WorkerState W_CREATED W_CONNECTED W_TERMINATING W_TERMINATED
@enum WorkerState W_CREATED W_CONNECTED W_TERMINATING W_TERMINATED W_UNKNOWN_STATE
mutable struct Worker
id::Int
msg_lock::Threads.ReentrantLock # Lock for del_msgs, add_msgs, and gcflag
Expand Down
5 changes: 5 additions & 0 deletions src/managers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,11 @@ Launch `np` workers on the local host using the in-built `LocalManager`.
Local workers inherit the current package environment (i.e., active project,
[`LOAD_PATH`](@ref), and [`DEPOT_PATH`](@ref)) from the main process.
!!! warning
Note that workers do not run a `~/.julia/config/startup.jl` startup script, nor do they synchronize
their global state (such as command-line switches, global variables, new method definitions, and loaded modules) with any
of the other running processes.
**Keyword arguments**:
- `restrict::Bool`: if `true` (default) binding is restricted to `127.0.0.1`.
- `dir`, `exename`, `exeflags`, `env`, `topology`, `lazy`, `enable_threaded_blas`: same effect
Expand Down
5 changes: 3 additions & 2 deletions src/process_messages.jl
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,7 @@ function message_handler_loop(r_stream::IO, w_stream::IO, incoming::Bool)
handle_msg(msg, header, r_stream, w_stream, version)
end
catch e
werr = worker_from_id(wpid)
oldstate = werr.state
oldstate = W_UNKNOWN_STATE

# Check again as it may have been set in a message handler but not propagated to the calling block above
if wpid < 1
Expand All @@ -222,6 +221,8 @@ function message_handler_loop(r_stream::IO, w_stream::IO, incoming::Bool)
println(stderr, e, CapturedException(e, catch_backtrace()))
println(stderr, "Process($(myid())) - Unknown remote, closing connection.")
elseif !(wpid in map_del_wrkr)
werr = worker_from_id(wpid)
oldstate = werr.state
set_worker_state(werr, W_TERMINATED)

# If unhandleable error occurred talking to pid 1, exit
Expand Down

0 comments on commit 93556d2

Please sign in to comment.