This is an automated email from the ASF dual-hosted git repository.
zhangwenfeng pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/develop by this push:
new a82628947 Fix/remove setdeadline (#2785)
a82628947 is described below
commit a8262894711c433dcfbd6b9484f0cf3875f31579
Author: xinfan.wu <[email protected]>
AuthorDate: Mon Mar 3 10:31:48 2025 +0800
Fix/remove setdeadline (#2785)
---
protocol/rest/client/client_impl/resty_client.go | 7 ++-----
protocol/rest/client/rest_client.go | 5 +++--
protocol/rest/rest_protocol.go | 3 ++-
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/protocol/rest/client/client_impl/resty_client.go
b/protocol/rest/client/client_impl/resty_client.go
index 7044a53d2..26989d2b3 100644
--- a/protocol/rest/client/client_impl/resty_client.go
+++ b/protocol/rest/client/client_impl/resty_client.go
@@ -22,7 +22,6 @@ import (
"net"
"net/http"
"path"
- "time"
)
import (
@@ -56,13 +55,11 @@ func NewRestyClient(restOption *client.RestOptions)
client.RestClient {
if err != nil {
return nil, err
}
- err =
c.SetDeadline(time.Now().Add(restOption.RequestTimeout))
- if err != nil {
- return nil, err
- }
return c, nil
},
+ IdleConnTimeout: restOption.KeppAliveTimeout,
})
+ client.SetTimeout(restOption.RequestTimeout)
return &RestyClient{
client: client,
}
diff --git a/protocol/rest/client/rest_client.go
b/protocol/rest/client/rest_client.go
index 2215da4c2..daa491a98 100644
--- a/protocol/rest/client/rest_client.go
+++ b/protocol/rest/client/rest_client.go
@@ -23,8 +23,9 @@ import (
)
type RestOptions struct {
- RequestTimeout time.Duration
- ConnectTimeout time.Duration
+ RequestTimeout time.Duration
+ ConnectTimeout time.Duration
+ KeppAliveTimeout time.Duration
}
type RestClientRequest struct {
diff --git a/protocol/rest/rest_protocol.go b/protocol/rest/rest_protocol.go
index 303b45353..59a4741b2 100644
--- a/protocol/rest/rest_protocol.go
+++ b/protocol/rest/rest_protocol.go
@@ -93,6 +93,7 @@ func (rp *RestProtocol) Refer(url *common.URL)
protocol.Invoker {
requestTimeout := time.Duration(3 * time.Second)
requestTimeoutStr := url.GetParam(constant.TimeoutKey, "3s")
connectTimeout := requestTimeout //
config.GetConsumerConfig().ConnectTimeout
+ keepAliveTimeout := url.GetParamDuration(constant.KeepAliveTimeout,
constant.DefaultKeepAliveTimeout)
// end
if t, err := time.ParseDuration(requestTimeoutStr); err == nil {
requestTimeout = t
@@ -103,7 +104,7 @@ func (rp *RestProtocol) Refer(url *common.URL)
protocol.Invoker {
logger.Errorf("%s service doesn't has consumer config",
url.Path)
return nil
}
- restOptions := client.RestOptions{RequestTimeout: requestTimeout,
ConnectTimeout: connectTimeout}
+ restOptions := client.RestOptions{RequestTimeout: requestTimeout,
ConnectTimeout: connectTimeout, KeppAliveTimeout: keepAliveTimeout}
restClient := rp.getClient(restOptions, restServiceConfig.Client)
invoker := NewRestInvoker(url, &restClient,
restServiceConfig.RestMethodConfigsMap)
rp.SetInvokers(invoker)