From 402957092e4888052d7c50edbe534a1a59b599c8 Mon Sep 17 00:00:00 2001 From: cuisongliu Date: Thu, 9 May 2024 21:01:10 +0800 Subject: [PATCH] :zap: when high concurrency occurs, the connection is full and the connection is rejected. Signed-off-by: cuisongliu --- api/client.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/api/client.go b/api/client.go index 72a0130..e8e0e97 100644 --- a/api/client.go +++ b/api/client.go @@ -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. @@ -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 @@ -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)