Double the timeout.

This commit is contained in:
2025-11-18 18:26:29 +00:00
parent 6c55bccc20
commit 489247c42a
2 changed files with 21 additions and 21 deletions
+9 -9
View File
@@ -18,19 +18,19 @@ func (b *BaseClient) createHttpClient() (http_client *http.Client) {
MaxIdleConns: 100,
MaxConnsPerHost: 50,
MaxIdleConnsPerHost: 10,
IdleConnTimeout: 30 * time.Second,
ResponseHeaderTimeout: 10 * time.Second,
IdleConnTimeout: 60 * time.Second,
ResponseHeaderTimeout: 20 * time.Second,
DisableKeepAlives: false,
DisableCompression: true, // Disable automatic compression to prevent trailing garbage errors
WriteBufferSize: 4096,
ReadBufferSize: 4096,
// Additional settings for connection health
ExpectContinueTimeout: 1 * time.Second, // Timeout for 100-Continue
TLSHandshakeTimeout: 10 * time.Second, // Timeout for TLS handshake
ExpectContinueTimeout: 2 * time.Second, // Timeout for 100-Continue
TLSHandshakeTimeout: 20 * time.Second, // Timeout for TLS handshake
}
http_client = &http.Client{
Timeout: 30 * time.Second,
Timeout: 60 * time.Second,
Transport: httpTransport,
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
@@ -50,9 +50,9 @@ func (b *BaseClient) createHttpClient() (http_client *http.Client) {
http2Transport := &http2.Transport{
AllowHTTP: true,
TLSClientConfig: tlsClientConfig,
ReadIdleTimeout: 30 * time.Second, // Close idle connections after 30s
PingTimeout: 10 * time.Second, // Detect dead connections with PING
WriteByteTimeout: 10 * time.Second, // Timeout for write operations
ReadIdleTimeout: 60 * time.Second, // Close idle connections after 60s
PingTimeout: 20 * time.Second, // Detect dead connections with PING
WriteByteTimeout: 20 * time.Second, // Timeout for write operations
DisableCompression: true, // Disable automatic compression to prevent trailing garbage errors
// StrictMaxConcurrentStreams forces the HTTP/2 connection to wait for SETTINGS frame
// This helps with connection health detection
@@ -60,7 +60,7 @@ func (b *BaseClient) createHttpClient() (http_client *http.Client) {
}
http_client = &http.Client{
Timeout: 30 * time.Second,
Timeout: 60 * time.Second,
Transport: http2Transport,
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
+12 -12
View File
@@ -17,7 +17,7 @@ func (suite *Tests) TestBaseClient_createHttpClient() {
httpClient := client.createHttpClient()
assert.NotNil(httpClient)
assert.Equal(30*time.Second, httpClient.Timeout)
assert.Equal(60*time.Second, httpClient.Timeout)
assert.NotNil(httpClient.Transport)
// Check that it's using HTTP/1.1 transport (h2c is rarely supported by servers)
@@ -26,8 +26,8 @@ func (suite *Tests) TestBaseClient_createHttpClient() {
assert.Equal(100, transport.MaxIdleConns)
assert.Equal(50, transport.MaxConnsPerHost)
assert.Equal(10, transport.MaxIdleConnsPerHost)
assert.Equal(30*time.Second, transport.IdleConnTimeout)
assert.Equal(10*time.Second, transport.ResponseHeaderTimeout)
assert.Equal(60*time.Second, transport.IdleConnTimeout)
assert.Equal(20*time.Second, transport.ResponseHeaderTimeout)
assert.False(transport.DisableKeepAlives)
assert.True(transport.DisableCompression) // Request compression disabled to prevent "trailing garbage" errors
assert.Equal(4096, transport.WriteBufferSize)
@@ -40,7 +40,7 @@ func (suite *Tests) TestBaseClient_createHttpClient() {
httpClient := client.createHttpClient()
assert.NotNil(httpClient)
assert.Equal(30*time.Second, httpClient.Timeout)
assert.Equal(60*time.Second, httpClient.Timeout)
assert.NotNil(httpClient.Transport)
// Check that it's using HTTP/2 transport
@@ -49,9 +49,9 @@ func (suite *Tests) TestBaseClient_createHttpClient() {
assert.True(transport.AllowHTTP)
assert.NotNil(transport.TLSClientConfig)
assert.True(transport.TLSClientConfig.InsecureSkipVerify)
assert.Equal(30*time.Second, transport.ReadIdleTimeout)
assert.Equal(10*time.Second, transport.PingTimeout)
assert.Equal(10*time.Second, transport.WriteByteTimeout)
assert.Equal(60*time.Second, transport.ReadIdleTimeout)
assert.Equal(20*time.Second, transport.PingTimeout)
assert.Equal(20*time.Second, transport.WriteByteTimeout)
})
suite.T().Run("should handle invalid endpoints", func(t *testing.T) {
@@ -105,8 +105,8 @@ func (suite *Tests) TestBaseClient_createHttpClient_transportSettings() {
assert.Equal(100, transport.MaxIdleConns)
assert.Equal(50, transport.MaxConnsPerHost)
assert.Equal(10, transport.MaxIdleConnsPerHost)
assert.Equal(30*time.Second, transport.IdleConnTimeout)
assert.Equal(10*time.Second, transport.ResponseHeaderTimeout)
assert.Equal(60*time.Second, transport.IdleConnTimeout)
assert.Equal(20*time.Second, transport.ResponseHeaderTimeout)
assert.False(transport.DisableKeepAlives)
assert.True(transport.DisableCompression) // Request compression disabled to prevent "trailing garbage" errors
assert.Equal(4096, transport.WriteBufferSize)
@@ -124,9 +124,9 @@ func (suite *Tests) TestBaseClient_createHttpClient_transportSettings() {
assert.True(transport.AllowHTTP)
assert.NotNil(transport.TLSClientConfig)
assert.True(transport.TLSClientConfig.InsecureSkipVerify)
assert.Equal(30*time.Second, transport.ReadIdleTimeout)
assert.Equal(10*time.Second, transport.PingTimeout)
assert.Equal(10*time.Second, transport.WriteByteTimeout)
assert.Equal(60*time.Second, transport.ReadIdleTimeout)
assert.Equal(20*time.Second, transport.PingTimeout)
assert.Equal(20*time.Second, transport.WriteByteTimeout)
})
}