diff --git a/weed/worker/client.go b/weed/worker/client.go index 3eb892e86..e0ae719b5 100644 --- a/weed/worker/client.go +++ b/weed/worker/client.go @@ -360,7 +360,11 @@ func handleOutgoing( handleStreamError := func(err error) { if err != nil { glog.Errorf("Failed to send message to admin: %v", err) - cmds <- grpcCommand{action: ActionStreamError, data: err} + select { + case cmds <- grpcCommand{action: ActionStreamError, data: err}: + case <-time.After(2 * time.Second): + glog.Warningf("Failed to send stream error to manager from outgoing handler, channel blocked: %v", err) + } } } @@ -470,7 +474,11 @@ func handleIncoming( default: glog.V(2).Infof("Manager busy, queuing stream error asynchronously: %v", err) go func(e error) { - cmds <- grpcCommand{action: ActionStreamError, data: e} + select { + case cmds <- grpcCommand{action: ActionStreamError, data: e}: + case <-time.After(2 * time.Second): + glog.Warningf("Failed to send stream error to manager, channel blocked: %v", e) + } }(err) }