JuliaLang / JuliaLang/Distributed.jl
propagate Ctrl-C on a `put!`, `take!`, etc to the remote process
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 55
- Forks
- 19
- PR merge metrics
- No merged PRs in 30d
Description
julia> rr=RemoteRef(2)
RemoteRef(2,1,1)
julia> take!(rr)
^CERROR: InterruptException:
in process_events at ./stream.jl:642
in wait at ./task.jl:302
in wait at ./task.jl:228
in wait_full at ./multi.jl:631
in remotecall_fetch at multi.jl:731
in call_on_owner at ./multi.jl:778
in take! at ./multi.jl:811
julia> put!(rr, 1)
RemoteRef(2,1,1)
julia> take!(rr)
The second take! does not get the data from the put! since Ctrl-C does not actually kill the spawned first take! task on the remote worker.
Interrupting the parallel API calls should interrupt the waiting tasks on the remote process too.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the interrupted take! and subsequent put!/take! sequence shown in the issue. Start by tracing remotecall_fetch, call_on_owner, and take! in the distributed parallel API, then follow how the remote waiting task is created and interrupted. Done means interrupting a waiting API call also interrupts its remote task, allowing the later take! to receive the data.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100