12167: Generate a new request ID if caller explicitly uses "".
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 3 May 2018 14:21:05 +0000 (10:21 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 3 May 2018 14:21:05 +0000 (10:21 -0400)
Skip invoking unique ID generator if ID is already set.

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

sdk/go/arvados/client.go

index ce2c5aea3db7c34bb480b3e4c74e14aecc26ab31..cca9f9bf1be8e946b7b9594f1ed839e92aa73485 100644 (file)
@@ -106,15 +106,16 @@ func (c *Client) Do(req *http.Request) (*http.Response, error) {
                req.Header.Add("Authorization", "OAuth2 "+c.AuthToken)
        }
 
-       reqid, ok := c.context().Value(contextKeyRequestID).(string)
-       if !ok {
-               reqid = reqIDGen.Next()
-       }
        if req.Header.Get("X-Request-Id") == "" {
+               reqid, _ := c.context().Value(contextKeyRequestID).(string)
+               if reqid == "" {
+                       reqid = reqIDGen.Next()
+               }
                if req.Header == nil {
-                       req.Header = http.Header{}
+                       req.Header = http.Header{"X-Request-Id": {reqid}}
+               } else {
+                       req.Header.Set("X-Request-Id", reqid)
                }
-               req.Header.Set("X-Request-Id", reqid)
        }
        return c.httpClient().Do(req)
 }