Commit a3deb311 authored by Janoš Guljaš's avatar Janoš Guljaš Committed by GitHub

fix(pushsync, retrieval): avoid deadlocks on context done (#2327)

parent 7ab51ef4
...@@ -381,7 +381,10 @@ func (ps *PushSync) pushToClosest(ctx context.Context, ch swarm.Chunk, retryAllo ...@@ -381,7 +381,10 @@ func (ps *PushSync) pushToClosest(ctx context.Context, ch swarm.Chunk, retryAllo
ps.skipList.Add(peer, ch.Address(), skipPeerExpiration) ps.skipList.Add(peer, ch.Address(), skipPeerExpiration)
} }
resultC <- &pushResult{err: err, attempted: attempted} select {
case resultC <- &pushResult{err: err, attempted: attempted}:
case <-ctx.Done():
}
return return
} }
select { select {
......
...@@ -154,16 +154,22 @@ func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address, origin ...@@ -154,16 +154,22 @@ func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address, origin
defer cancel() defer cancel()
chunk, peer, requested, err := s.retrieveChunk(ctx, addr, sp, origin) chunk, peer, requested, err := s.retrieveChunk(ctx, addr, sp, origin)
resultC <- retrievalResult{ select {
case resultC <- retrievalResult{
chunk: chunk, chunk: chunk,
peer: peer, peer: peer,
err: err, err: err,
retrieved: requested, retrieved: requested,
}:
case <-ctx.Done():
} }
}() }()
} else { } else {
resultC <- retrievalResult{} select {
case resultC <- retrievalResult{}:
case <-ctx.Done():
}
} }
select { select {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment