Skip to content

Commit

Permalink
style(blobstore): correctly close response body
Browse files Browse the repository at this point in the history
close cubefs#2253

Signed-off-by: slasher <[email protected]>
  • Loading branch information
sejust committed Jul 7, 2023
1 parent 46d1f78 commit 0f9f3d1
Show file tree
Hide file tree
Showing 10 changed files with 34 additions and 36 deletions.
1 change: 1 addition & 0 deletions blobstore/api/proxy/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,5 +78,6 @@ func (c *client) Erase(ctx context.Context, host string, key string) error {
if err != nil {
return err
}
defer resp.Body.Close()
return rpc.ParseData(resp, nil)
}
1 change: 0 additions & 1 deletion blobstore/blobnode/core/chunk/compact.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,6 @@ COMPACT:
if err != nil {
if err == core.ErrChunkScanEOF {
span.Infof("chunk %s scan finished", cs.ID())
err = nil
break COMPACT
} else {
span.Errorf("scan chunk meta(%s) failed: %v", cs.ID(), err)
Expand Down
4 changes: 2 additions & 2 deletions blobstore/cli/common/cfmt/access_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ func TestParseLocation(t *testing.T) {
},
}

locx, err := cfmt.ParseLocation("")
_, err := cfmt.ParseLocation("")
require.Error(t, err)

_, err = cfmt.ParseLocation("xxxx")
require.Error(t, err)

locx, err = cfmt.ParseLocation("{}")
locx, err := cfmt.ParseLocation("{}")
require.NoError(t, err)
require.Equal(t, access.Location{}, locx)

Expand Down
6 changes: 1 addition & 5 deletions blobstore/clustermgr/diskmgr/alloc.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,7 @@ func (s *idcStorage) allocFromBlobNodeStorages(ctx context.Context, count int, t

for _, diskInfo := range excludes {
diskInfo.lock.RLock()
if excludeHosts == nil {
excludeHosts = map[string]bool{diskInfo.info.Host: true}
} else {
excludeHosts[diskInfo.info.Host] = true
}
excludeHosts[diskInfo.info.Host] = true
diskInfo.lock.RUnlock()
}

Expand Down
5 changes: 2 additions & 3 deletions blobstore/clustermgr/diskmgr/alloc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package diskmgr

import (
"context"
"fmt"
"math/rand"
"os"
"strconv"
Expand Down Expand Up @@ -123,7 +122,7 @@ func TestAlloc(t *testing.T) {
// refresh cluster's disk space allocator
testDiskMgr.refresh(ctx)

t.Log(fmt.Sprintf("all disk length: %d", len(testDiskMgr.allDisks)))
t.Logf("all disk length: %d", len(testDiskMgr.allDisks))

// alloc from not enough space, alloc should return ErrNoEnoughSpace
for _, idc := range testIdcs {
Expand Down Expand Up @@ -235,7 +234,7 @@ func TestAllocWithSameHost(t *testing.T) {
testDiskMgr.RackAware = false
testDiskMgr.refresh(ctx)

t.Log(fmt.Sprintf("all disk length: %d", len(testDiskMgr.allDisks)))
t.Logf("all disk length: %d", len(testDiskMgr.allDisks))

// alloc from not enough space, alloc should return ErrNoEnoughSpace
for _, idc := range testIdcs {
Expand Down
11 changes: 5 additions & 6 deletions blobstore/common/rpc/lb.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,7 @@ var defaultShouldRetry = func(code int, err error) bool {
}

func (c *lbClient) Do(ctx context.Context, req *http.Request) (*http.Response, error) {
resp, err := c.doCtx(ctx, req)
if err != nil {
return resp, err
}
return resp, err
return c.doCtx(ctx, req)
}

func (c *lbClient) Form(ctx context.Context, method, url string, form map[string][]string) (resp *http.Response, err error) {
Expand Down Expand Up @@ -162,6 +158,7 @@ func (c *lbClient) DoWith(ctx context.Context, req *http.Request, ret interface{
if err != nil {
return err
}
defer resp.Body.Close()
err = serverCrcEncodeCheck(ctx, req, resp)
if err != nil {
return err
Expand All @@ -174,7 +171,7 @@ func (c *lbClient) GetWith(ctx context.Context, url string, ret interface{}) err
if err != nil {
return err
}
return ParseData(resp, ret)
return parseData(resp, ret)
}

func (c *lbClient) PutWith(ctx context.Context, url string, ret interface{}, params interface{}, opts ...Option) (err error) {
Expand All @@ -194,6 +191,7 @@ func (c *lbClient) PutWith(ctx context.Context, url string, ret interface{}, par
if err != nil {
return
}
defer resp.Body.Close()
err = serverCrcEncodeCheck(ctx, request, resp)
if err != nil {
return err
Expand All @@ -219,6 +217,7 @@ func (c *lbClient) PostWith(ctx context.Context, url string, ret interface{}, pa
if err != nil {
return err
}
defer resp.Body.Close()

// set Header and log errors
err = serverCrcEncodeCheck(ctx, request, resp)
Expand Down
4 changes: 2 additions & 2 deletions blobstore/common/rpc/lb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func TestLbClient_Delete(t *testing.T) {
result := &ret{}
resp, err := client.Delete(ctx, "/get/name?id="+strconv.Itoa(122))
require.NoError(t, err)
err = ParseData(resp, result)
err = parseData(resp, result)
require.NoError(t, err)
require.NotNil(t, result)
client.Close()
Expand Down Expand Up @@ -337,7 +337,7 @@ func TestLbClient_Post(t *testing.T) {
check, err := client.Post(ctx, "", ret{Name: "test_lb_PostJSON"})
require.NoError(t, err)
client.Close()
err = ParseData(check, result)
err = parseData(check, result)
require.NoError(t, err)
require.NotNil(t, result)
}
Expand Down
10 changes: 5 additions & 5 deletions blobstore/common/rpc/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@ func TestServerResponseWith(t *testing.T) {
resp := resp(router).ToResponse()
require.Equal(t, 204, resp.StatusCode)

err := ParseData(resp, nil)
err := parseData(resp, nil)
require.Error(t, err)
}
{
Expand All @@ -474,12 +474,12 @@ func TestServerResponseWith(t *testing.T) {
require.Equal(t, 200, resp.StatusCode)

var r marshalData
err := ParseData(resp, &r)
err := parseData(resp, &r)
require.NoError(t, err)
require.Equal(t, "rab oof", r.S)

resp.Body = io.NopCloser(bytes.NewBuffer(nil))
err = ParseData(resp, &r)
err = parseData(resp, &r)
require.Error(t, err)
}
{
Expand All @@ -491,7 +491,7 @@ func TestServerResponseWith(t *testing.T) {
require.Equal(t, 200, resp.StatusCode)

var r marshalToData
err := ParseData(resp, &r)
err := parseData(resp, &r)
require.NoError(t, err)
require.Equal(t, "oof rab", r.S)
}
Expand All @@ -504,7 +504,7 @@ func TestServerResponseWith(t *testing.T) {
require.Equal(t, 200, resp.StatusCode)

var r marshalToData
err := ParseData(resp, &r)
err := parseData(resp, &r)
require.Error(t, err)
}
}
Expand Down
18 changes: 11 additions & 7 deletions blobstore/common/rpc/simple.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
urllib "net/url"
"strings"
Expand Down Expand Up @@ -158,6 +157,7 @@ func (c *client) DoWith(ctx context.Context, req *http.Request, ret interface{},
if err != nil {
return err
}
defer resp.Body.Close()

err = serverCrcEncodeCheck(ctx, req, resp)
if err != nil {
Expand All @@ -171,7 +171,7 @@ func (c *client) GetWith(ctx context.Context, url string, ret interface{}) error
if err != nil {
return err
}
return ParseData(resp, ret)
return parseData(resp, ret)
}

func (c *client) PutWith(ctx context.Context, url string, ret interface{}, params interface{}, opts ...Option) (err error) {
Expand All @@ -191,6 +191,7 @@ func (c *client) PutWith(ctx context.Context, url string, ret interface{}, param
if err != nil {
return
}
defer resp.Body.Close()
err = serverCrcEncodeCheck(ctx, request, resp)
if err != nil {
return err
Expand All @@ -216,6 +217,7 @@ func (c *client) PostWith(ctx context.Context, url string, ret interface{}, para
if err != nil {
return err
}
defer resp.Body.Close()

err = serverCrcEncodeCheck(ctx, request, resp)
if err != nil {
Expand Down Expand Up @@ -292,12 +294,14 @@ func (c *client) doWithCtx(ctx context.Context, req *http.Request) (resp *http.R
return
}

// ParseData parse response with data
// parseData close response body in this package.
func parseData(resp *http.Response, data interface{}) (err error) {
defer resp.Body.Close()
return ParseData(resp, data)
}

// ParseData parse response with data, close response body by yourself.
func ParseData(resp *http.Response, data interface{}) (err error) {
defer func() {
io.Copy(ioutil.Discard, resp.Body)
resp.Body.Close()
}()
if resp.StatusCode/100 == 2 {
size := resp.ContentLength
if data != nil && size != 0 {
Expand Down
10 changes: 5 additions & 5 deletions blobstore/common/rpc/simple_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ func TestClient_Post(t *testing.T) {
result := &ret{}
resp, err := simpleClient.Post(ctx, testServer.URL+"/json", &ret{Name: "TestClient_Post"})
require.NoError(t, err)
err = ParseData(resp, result)
err = parseData(resp, result)
require.NoError(t, err)
require.NotNil(t, result)
require.Equal(t, "TestClient_Post+Test", result.Name)
Expand Down Expand Up @@ -268,7 +268,7 @@ func TestClient_Put(t *testing.T) {
result := &ret{}
resp, err := simpleClient.Put(ctx, testServer.URL+"/json", &ret{Name: "TestClient_Put"})
require.NoError(t, err)
err = ParseData(resp, result)
err = parseData(resp, result)
require.NoError(t, err)
require.NotNil(t, result)
require.Equal(t, "TestClient_Put+Test", result.Name)
Expand Down Expand Up @@ -325,7 +325,7 @@ func TestClient_ParseDataWithContentLengthZero(t *testing.T) {
require.NoError(t, err)
resp.StatusCode = 400
resp.ContentLength = 0
err = ParseData(resp, result)
err = parseData(resp, result)
require.Error(t, err)
}

Expand All @@ -338,7 +338,7 @@ func TestClient_ParseData(t *testing.T) {
require.NoError(t, err)
resp.StatusCode = 400
resp.ContentLength = 12
err = ParseData(resp, result)
err = parseData(resp, result)
require.Error(t, err)
}

Expand All @@ -360,7 +360,7 @@ func TestClient_ResponseClose(t *testing.T) {
&ret{Name: "TestClient_ResponseClose"})
require.NoError(t, err)
resp.Body.Close()
err = ParseData(resp, result)
err = parseData(resp, result)
require.Error(t, err)
}

Expand Down

0 comments on commit 0f9f3d1

Please sign in to comment.