Skip to content

Commit 67da4d5

Browse files
krynjuvtjnash
andauthored
Update stdlib/Distributed/src/remotecall.jl
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
1 parent 83ecafa commit 67da4d5

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

stdlib/Distributed/src/remotecall.jl

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -362,12 +362,22 @@ end
362362
channel_type(rr::RemoteChannel{T}) where {T} = T
363363

364364
function serialize(s::ClusterSerializer, f::Future)
365-
v_cache = @atomic f.v
366-
serialize(s, f, v_cache === nothing)
365+
serialize_type(s, typeof(f))
366+
serialize(s, f.where)
367+
serialize(s, remoteref_id(f))
368+
value = @atomic f.v
369+
if value === nothing
370+
p = worker_id_from_socket(s.io)
371+
(p !== rr.where) && send_add_client(rr, p)
372+
end
373+
serialize(s, value)
374+
end
375+
function serialize(s::ClusterSerializer, f::RemoteChannel)
376+
p = worker_id_from_socket(s.io)
377+
(p !== rr.where) && send_add_client(rr, p)
378+
invoke(serialize, Tuple{AbstractSerializer, Any}, s, f)
367379
end
368-
serialize(s::ClusterSerializer, rr::RemoteChannel) = serialize(s, rr, true)
369-
function serialize(s::ClusterSerializer, rr::AbstractRemoteRef, addclient)
370-
if addclient
380+
serialize(s::AbstractSerializer, ::AbstractLock) = error("Locks cannot be serialized")
371381
p = worker_id_from_socket(s.io)
372382
(p !== rr.where) && send_add_client(rr, p)
373383
end

0 commit comments

Comments
 (0)