Skip to content

Commit

Permalink
Merge pull request #5970 from jrasell/bug-gh-5506
Browse files Browse the repository at this point in the history
Fix returned EOF error when calling Nodes GC/GcAlloc API
  • Loading branch information
jrasell committed Mar 12, 2020
2 parents 483401f + d890ddb commit 5d5469e
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
13 changes: 11 additions & 2 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"compress/gzip"
"crypto/tls"
"encoding/json"
"errors"
"fmt"
"io"
"net"
Expand Down Expand Up @@ -930,8 +931,16 @@ func parseWriteMeta(resp *http.Response, q *WriteMeta) error {

// decodeBody is used to JSON decode a body
func decodeBody(resp *http.Response, out interface{}) error {
dec := json.NewDecoder(resp.Body)
return dec.Decode(out)
switch resp.ContentLength {
case 0:
if out == nil {
return nil
}
return errors.New("Got 0 byte response with non-nil decode object")
default:
dec := json.NewDecoder(resp.Body)
return dec.Decode(out)
}
}

// encodeBody is used to encode a request body
Expand Down
6 changes: 2 additions & 4 deletions api/nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,17 +413,15 @@ func (n *Nodes) Stats(nodeID string, q *QueryOptions) (*HostStats, error) {
}

func (n *Nodes) GC(nodeID string, q *QueryOptions) error {
var resp struct{}
path := fmt.Sprintf("/v1/client/gc?node_id=%s", nodeID)
_, err := n.client.query(path, &resp, q)
_, err := n.client.query(path, nil, q)
return err
}

// TODO Add tests
func (n *Nodes) GcAlloc(allocID string, q *QueryOptions) error {
var resp struct{}
path := fmt.Sprintf("/v1/client/allocation/%s/gc", allocID)
_, err := n.client.query(path, &resp, q)
_, err := n.client.query(path, nil, q)
return err
}

Expand Down

0 comments on commit 5d5469e

Please sign in to comment.