mirror of
https://github.com/lukaszraczylo/go-simple-graphql.git
synced 2026-10-12 00:45:31 +00:00
Double the timeout.
This commit is contained in:
@@ -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
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user