@@ -415,35 +415,30 @@ func (s *Server) peerQuerySpeculativeChan(ctx context.Context, data cluster.Trac
415
415
reqCtx , cancel := context .WithCancel (ctx )
416
416
defer cancel ()
417
417
418
- originalPeers := make (map [string ]struct {}, len (peerGroups ))
419
- receivedResponses := make (map [int32 ]struct {}, len (peerGroups ))
420
-
421
- responses := make (chan struct {
418
+ type response struct {
422
419
shardGroup int32
423
420
data PeerResponse
424
421
err error
425
- }, 1 )
422
+ }
423
+
424
+ responses := make (chan response )
425
+ originalPeers := make (map [string ]struct {}, len (peerGroups ))
426
+ receivedResponses := make (map [int32 ]struct {}, len (peerGroups ))
426
427
427
428
askPeer := func (shardGroup int32 , peer cluster.Node ) {
428
429
log .Debugf ("HTTP Render querying %s%s" , peer .GetName (), path )
429
430
buf , err := peer .Post (reqCtx , name , path , data )
431
+ if err != nil {
432
+ cancel ()
433
+ log .Errorf ("HTTP Render error querying %s%s: %q" , peer .GetName (), path , err )
434
+ }
430
435
431
436
select {
432
437
case <- ctx .Done ():
433
438
return
434
- default :
435
- // Not canceled, continue
436
- }
437
-
438
- if err != nil {
439
- cancel ()
440
- log .Errorf ("HTTP Render error querying %s%s: %q" , peer .GetName (), path , err )
439
+ case responses <- response {shardGroup , PeerResponse {peer , buf }, err }:
440
+ return
441
441
}
442
- responses <- struct {
443
- shardGroup int32
444
- data PeerResponse
445
- err error
446
- }{shardGroup , PeerResponse {peer , buf }, err }
447
442
}
448
443
449
444
for group , peers := range peerGroups {
0 commit comments