14458: Drain errorChan without waiting for close
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 8 Nov 2018 18:18:59 +0000 (13:18 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 8 Nov 2018 18:18:59 +0000 (13:18 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

lib/controller/fed_collections.go

index 2121480e1e7542d06fafc6e7b642d2300d6f85e5..e4982d9ad7171726db75277833f9a24097353d09 100644 (file)
@@ -271,7 +271,6 @@ func (h *collectionFederatedRequestHandler) ServeHTTP(w http.ResponseWriter, req
        }
        go func() {
                wg.Wait()
-               close(errorChan)
                cancelFunc()
        }()
 
@@ -284,7 +283,8 @@ func (h *collectionFederatedRequestHandler) ServeHTTP(w http.ResponseWriter, req
                        return
                case <-sharedContext.Done():
                        var errors []string
-                       for err := range errorChan {
+                       for len(errorChan) > 0 {
+                               err <- errorChan
                                if httperr, ok := err.(HTTPError); ok {
                                        if httperr.Code != http.StatusNotFound {
                                                errorCode = http.StatusBadGateway