Skip to content

Commit

Permalink
⚡ when high concurrency occurs, the connection is full and the connec…
Browse files Browse the repository at this point in the history
…tion is rejected.

Signed-off-by: cuisongliu <cuisongliu@qq.com>
  • Loading branch information
cuisongliu committed May 17, 2024
1 parent 7d3be80 commit 4029570
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions api/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ type Client interface {
Do(context.Context, *http.Request) (*http.Response, []byte, error)
}

type closeIdler interface {
CloseIdleConnections()
}

// NewClient returns a new Client.
//
// It is safe to use the returned Client from multiple goroutines.
Expand All @@ -99,6 +103,10 @@ func NewClient(cfg Config) (Client, error) {
}, nil
}

func ClientCloseIdler(cl Client) {
cl.(closeIdler).CloseIdleConnections()
}

type httpClient struct {
endpoint *url.URL
client http.Client
Expand All @@ -118,6 +126,10 @@ func (c *httpClient) URL(ep string, args map[string]string) *url.URL {
return &u
}

func (c *httpClient) CloseIdleConnections() {
c.client.CloseIdleConnections()
}

func (c *httpClient) Do(ctx context.Context, req *http.Request) (*http.Response, []byte, error) {
if ctx != nil {
req = req.WithContext(ctx)
Expand Down

0 comments on commit 4029570

Please sign in to comment.