diff --git a/go.mod b/go.mod index 9efb40e17f..d0693010e9 100644 --- a/go.mod +++ b/go.mod @@ -83,12 +83,12 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230629091720-06b0a3679659 - yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230704115544-46184b6aad76 + yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900 - yunion.io/x/pkg v1.0.1-0.20230613081559-f38e2cb344b4 + yunion.io/x/pkg v1.0.1-0.20230705150700-c631d3f97d59 yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e yunion.io/x/sqlchemy v1.1.2-0.20230615091740-63854d9b514e yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6 diff --git a/go.sum b/go.sum index a9fe119201..087a85da60 100644 --- a/go.sum +++ b/go.sum @@ -1174,10 +1174,10 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230629091720-06b0a3679659 h1:ERMDxYpqVHULPcVizgMOIHpOWq33ajRNZzzehWJBmEw= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230629091720-06b0a3679659/go.mod h1:crMeQeaNaZefTXfXbQkoj5SStggqkSNVABHtYBFjM3Y= -yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 h1:0zlZD5uhZoIHgLVAWCz2aHaYk2ZrNsACCYD7R6EIBII= -yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230704115544-46184b6aad76 h1:4SJeNFdCosLHI+KUVyY/Pnib4HB2NVDpiyj5TKK8Ixg= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230704115544-46184b6aad76/go.mod h1:crMeQeaNaZefTXfXbQkoj5SStggqkSNVABHtYBFjM3Y= +yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= +yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 h1:mZh6vuo7oOiOtE5HF4667+XBNnn7uYpmGN5eIgCVMLk= yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19/go.mod h1:VK4Z93dgiKgAijcSqbMKmGaBMJuHulR16Hz4K015ZPo= @@ -1189,8 +1189,8 @@ yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900 h1:Hu/4ERvoWaN6aiFs4h4/yvVB yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900/go.mod h1:0vLkNEhlmA64HViPBAnSTUMrx5QP1CLsxXmxDKQ80tc= yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E= yunion.io/x/pkg v0.0.0-20190628082551-f4033ba2ea30/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E= -yunion.io/x/pkg v1.0.1-0.20230613081559-f38e2cb344b4 h1:YpXY+evpJMNovHgEpgp4H9bBKvrbiN262dtC9c8jyJA= -yunion.io/x/pkg v1.0.1-0.20230613081559-f38e2cb344b4/go.mod h1:ksCJVQ+DwKrJ5QBEoU8pzrDFfDaZVAFH/iJ6yQCYxJk= +yunion.io/x/pkg v1.0.1-0.20230705150700-c631d3f97d59 h1:en9Mh7bfR2R2EZgA+QJWstl2WzK+ICt2aNEJAw8KXA4= +yunion.io/x/pkg v1.0.1-0.20230705150700-c631d3f97d59/go.mod h1:ksCJVQ+DwKrJ5QBEoU8pzrDFfDaZVAFH/iJ6yQCYxJk= yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e h1:v+EzIadodSwkdZ/7bremd7J8J50Cise/HCylsOJngmo= yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo= yunion.io/x/sqlchemy v1.1.2-0.20230615091740-63854d9b514e h1:iiM9Y1poJL24XY2q0ZgFR7yPBoKTNcOktdh2jka4ka4= diff --git a/pkg/cloudcommon/options/options.go b/pkg/cloudcommon/options/options.go index faffc59d20..40d4ed3869 100644 --- a/pkg/cloudcommon/options/options.go +++ b/pkg/cloudcommon/options/options.go @@ -146,6 +146,8 @@ type HostCommonOptions struct { DeployServerSocketPath string `help:"Deploy server listen socket path" default:"/var/run/onecloud/deploy.sock"` EnableRemoteExecutor bool `help:"Enable remote executor" default:"false"` + + ExecutorConnectTimeoutSeconds int `help:"executor client connection timeout in seconds, default is 30" default:"30"` } type DBOptions struct { diff --git a/pkg/hostman/host_health/service.go b/pkg/hostman/host_health/service.go index 93905a6f2f..8ba1494719 100644 --- a/pkg/hostman/host_health/service.go +++ b/pkg/hostman/host_health/service.go @@ -39,6 +39,7 @@ func (host *SHostHealthService) InitService() { log.Infof("exec socket path: %s", options.HostOptions.ExecutorSocketPath) if options.HostOptions.EnableRemoteExecutor { execlient.Init(options.HostOptions.ExecutorSocketPath) + execlient.SetTimeoutSeconds(options.HostOptions.ExecutorConnectTimeoutSeconds) procutils.SetRemoteExecutor() } } diff --git a/pkg/hostman/host_services.go b/pkg/hostman/host_services.go index 3d49697309..7fb8232ffa 100644 --- a/pkg/hostman/host_services.go +++ b/pkg/hostman/host_services.go @@ -63,6 +63,7 @@ func (host *SHostService) InitService() { log.Infof("exec socket path: %s", options.HostOptions.ExecutorSocketPath) if options.HostOptions.EnableRemoteExecutor { execlient.Init(options.HostOptions.ExecutorSocketPath) + execlient.SetTimeoutSeconds(options.HostOptions.ExecutorConnectTimeoutSeconds) procutils.SetRemoteExecutor() } } diff --git a/pkg/hostman/hostdeployer/deployserver/deployserver.go b/pkg/hostman/hostdeployer/deployserver/deployserver.go index ad671c87ad..7d0f420f1c 100644 --- a/pkg/hostman/hostdeployer/deployserver/deployserver.go +++ b/pkg/hostman/hostdeployer/deployserver/deployserver.go @@ -460,6 +460,7 @@ func (s *SDeployService) InitService() { log.Infof("exec socket path: %s", DeployOption.ExecutorSocketPath) if DeployOption.EnableRemoteExecutor { execlient.Init(DeployOption.ExecutorSocketPath) + execlient.SetTimeoutSeconds(DeployOption.ExecutorConnectTimeoutSeconds) procutils.SetRemoteExecutor() } diff --git a/pkg/image/service/service.go b/pkg/image/service/service.go index fbb4cff95c..81a430cb36 100644 --- a/pkg/image/service/service.go +++ b/pkg/image/service/service.go @@ -84,6 +84,7 @@ func StartService() { log.Infof("exec socket path: %s", options.Options.ExecutorSocketPath) if options.Options.EnableRemoteExecutor { execlient.Init(options.Options.ExecutorSocketPath) + execlient.SetTimeoutSeconds(options.Options.ExecutorConnectTimeoutSeconds) procutils.SetRemoteExecutor() } diff --git a/pkg/lbagent/service.go b/pkg/lbagent/service.go index 33a3f1830a..004d3f7bf8 100644 --- a/pkg/lbagent/service.go +++ b/pkg/lbagent/service.go @@ -57,6 +57,7 @@ func StartService() { if opts.EnableRemoteExecutor { execlient.Init(opts.ExecutorSocketPath) + execlient.SetTimeoutSeconds(opts.ExecutorConnectTimeoutSeconds) procutils.SetRemoteExecutor() } diff --git a/vendor/modules.txt b/vendor/modules.txt index dcb52f4bd7..bb7a7c97d6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1440,7 +1440,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230629091720-06b0a3679659 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230704115544-46184b6aad76 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing @@ -1514,7 +1514,7 @@ yunion.io/x/cloudmux/pkg/multicloud/ucloud yunion.io/x/cloudmux/pkg/multicloud/ucloud/provider yunion.io/x/cloudmux/pkg/multicloud/zstack yunion.io/x/cloudmux/pkg/multicloud/zstack/provider -# yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 +# yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 ## explicit; go 1.12 yunion.io/x/executor/apis yunion.io/x/executor/client @@ -1531,7 +1531,7 @@ yunion.io/x/log/hooks yunion.io/x/ovsdb/cli_util yunion.io/x/ovsdb/schema/ovn_nb yunion.io/x/ovsdb/types -# yunion.io/x/pkg v1.0.1-0.20230613081559-f38e2cb344b4 +# yunion.io/x/pkg v1.0.1-0.20230705150700-c631d3f97d59 ## explicit; go 1.18 yunion.io/x/pkg/appctx yunion.io/x/pkg/errors diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/azure/azure.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/azure/azure.go index c89e15d95a..448e4b1902 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/azure/azure.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/azure/azure.go @@ -155,6 +155,8 @@ func NewAzureClient(cfg *AzureClientConfig) (*SAzureClient, error) { } func (self *SAzureClient) getClient(resource TAzureResource) (*azureAuthClient, error) { + self.lock.Lock() + defer self.lock.Unlock() _client, ok := self.clientCache[resource] if ok { return _client, nil @@ -212,8 +214,6 @@ func (self *SAzureClient) getClient(resource TAzureResource) (*azureAuthClient, client.RequestInspector = LogRequest() } ret.client = &client - self.lock.Lock() - defer self.lock.Unlock() self.clientCache[resource] = ret return ret, nil } diff --git a/vendor/yunion.io/x/executor/LICENSE b/vendor/yunion.io/x/executor/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/vendor/yunion.io/x/executor/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/yunion.io/x/executor/client/client.go b/vendor/yunion.io/x/executor/client/client.go index deed5dbf84..2c97d303ad 100644 --- a/vendor/yunion.io/x/executor/client/client.go +++ b/vendor/yunion.io/x/executor/client/client.go @@ -16,7 +16,23 @@ import ( "yunion.io/x/executor/apis" ) -var exec *Executor +const ( + defaultTimeoutSecs = 3 +) + +var ( + exec *Executor + + timeoutSeconds = defaultTimeoutSecs +) + +func SetTimeoutSeconds(secs int) { + timeoutSeconds = secs +} + +func GetTimeoutSeconds() int { + return timeoutSeconds +} type Executor struct { socketPath string @@ -94,7 +110,7 @@ type Cmd struct { func grcpDialWithUnixSocket(ctx context.Context, socketPath string) (*grpc.ClientConn, error) { return grpc.DialContext( ctx, socketPath, - grpc.WithInsecure(), grpc.WithBlock(), grpc.WithTimeout(time.Second*3), + grpc.WithInsecure(), grpc.WithBlock(), grpc.WithTimeout(time.Second*time.Duration(timeoutSeconds)), grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { return net.DialTimeout("unix", addr, timeout) }), diff --git a/vendor/yunion.io/x/pkg/util/httputils/httputils.go b/vendor/yunion.io/x/pkg/util/httputils/httputils.go index e77b9d6b27..4698694718 100644 --- a/vendor/yunion.io/x/pkg/util/httputils/httputils.go +++ b/vendor/yunion.io/x/pkg/util/httputils/httputils.go @@ -57,9 +57,10 @@ const ( DELETE = THttpMethod("DELETE") OPTION = THttpMethod("OPTION") - IdleConnTimeout = 60 - TLSHandshakeTimeout = 10 - ResponseHeaderTimeout = 30 + ConnectionTimeoutSeconds = 120 + IdleConnTimeoutSeconds = 60 + TLSHandshakeTimeoutSeconds = 10 + ResponseHeaderTimeoutSeconds = 30 ) var ( @@ -306,7 +307,7 @@ func GetAdaptiveTransport(insecure bool) *http.Transport { } func adptiveDial(ctx context.Context, network, addr string) (net.Conn, error) { - conn, err := net.DialTimeout(network, addr, 10*time.Second) + conn, err := net.DialTimeout(network, addr, ConnectionTimeoutSeconds*time.Second) if err != nil { return nil, err } @@ -321,17 +322,17 @@ func getTransport(insecure bool, adaptive bool, timeout time.Duration) *http.Tra // (keep-alive) connection will remain idle before closing // itself. // Zero means no limit. - IdleConnTimeout: IdleConnTimeout * time.Second, + IdleConnTimeout: IdleConnTimeoutSeconds * time.Second, // 建立TCP连接后,等待TLS握手的超时时间 // TLSHandshakeTimeout specifies the maximum amount of time waiting to // wait for a TLS handshake. Zero means no timeout. - TLSHandshakeTimeout: TLSHandshakeTimeout * time.Second, + TLSHandshakeTimeout: TLSHandshakeTimeoutSeconds * time.Second, // 发送请求后,等待服务端http响应的超时时间 // ResponseHeaderTimeout, if non-zero, specifies the amount of // time to wait for a server's response headers after fully // writing the request (including its body, if any). This // time does not include the time to read the response body. - ResponseHeaderTimeout: ResponseHeaderTimeout * time.Second, + ResponseHeaderTimeout: ResponseHeaderTimeoutSeconds * time.Second, // 当请求携带Expect: 100-continue时,等待服务端100响应的超时时间 // ExpectContinueTimeout, if non-zero, specifies the amount of // time to wait for a server's first response headers after fully @@ -363,7 +364,7 @@ func getTransport(insecure bool, adaptive bool, timeout time.Duration) *http.Tra // With or without a timeout, the operating system may impose // its own earlier timeout. For instance, TCP timeouts are // often around 3 minutes. - Timeout: 10 * time.Second, + Timeout: ConnectionTimeoutSeconds * time.Second, // // KeepAlive specifies the interval between keep-alive // probes for an active network connection.