Skip to content

Commit 2256577

Browse files
committed
Add timeout on http requests for kv store DynamoDB client
Signed-off-by: Anna Tran <[email protected]>
1 parent 52d118d commit 2256577

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* [BUGFIX] Ruler: Validate if rule group can be safely converted back to rule group yaml from protobuf message #5265
88
* [BUGFIX] Querier: Convert gRPC `ResourceExhausted` status code from store gateway to 422 limit error. #5286
99
* [BUGFIX] Alertmanager: Route web-ui requests to the alertmanager distributor when sharding is enabled. #5293
10+
* [BUGFIX] Add timeout on http requests for kv store DynamoDB client. #6211
1011

1112
## 1.15.1 2023-04-26
1213

docs/configuration/config-file-reference.md

+28
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,10 @@ sharding_ring:
314314
# CLI flag: -alertmanager.sharding-ring.dynamodb.table-name
315315
[table_name: <string> | default = ""]
316316
317+
# HTTP timeout when talking to dynamodb
318+
# CLI flag: -alertmanager.sharding-ring.dynamodb.client-timeout
319+
[http_client_timeout: <duration> | default = 20s]
320+
317321
# Time to expire items on dynamodb.
318322
# CLI flag: -alertmanager.sharding-ring.dynamodb.ttl-time
319323
[ttl: <duration> | default = 0s]
@@ -1871,6 +1875,10 @@ sharding_ring:
18711875
# CLI flag: -compactor.ring.dynamodb.table-name
18721876
[table_name: <string> | default = ""]
18731877
1878+
# HTTP timeout when talking to dynamodb
1879+
# CLI flag: -compactor.ring.dynamodb.client-timeout
1880+
[http_client_timeout: <duration> | default = 20s]
1881+
18741882
# Time to expire items on dynamodb.
18751883
# CLI flag: -compactor.ring.dynamodb.ttl-time
18761884
[ttl: <duration> | default = 0s]
@@ -2106,6 +2114,10 @@ ha_tracker:
21062114
# CLI flag: -distributor.ha-tracker.dynamodb.table-name
21072115
[table_name: <string> | default = ""]
21082116
2117+
# HTTP timeout when talking to dynamodb
2118+
# CLI flag: -distributor.ha-tracker.dynamodb.client-timeout
2119+
[http_client_timeout: <duration> | default = 20s]
2120+
21092121
# Time to expire items on dynamodb.
21102122
# CLI flag: -distributor.ha-tracker.dynamodb.ttl-time
21112123
[ttl: <duration> | default = 0s]
@@ -2183,6 +2195,10 @@ ring:
21832195
# CLI flag: -distributor.ring.dynamodb.table-name
21842196
[table_name: <string> | default = ""]
21852197
2198+
# HTTP timeout when talking to dynamodb
2199+
# CLI flag: -distributor.ring.dynamodb.client-timeout
2200+
[http_client_timeout: <duration> | default = 20s]
2201+
21862202
# Time to expire items on dynamodb.
21872203
# CLI flag: -distributor.ring.dynamodb.ttl-time
21882204
[ttl: <duration> | default = 0s]
@@ -2471,6 +2487,10 @@ lifecycler:
24712487
# CLI flag: -dynamodb.table-name
24722488
[table_name: <string> | default = ""]
24732489
2490+
# HTTP timeout when talking to dynamodb
2491+
# CLI flag: -dynamodb.client-timeout
2492+
[http_client_timeout: <duration> | default = 20s]
2493+
24742494
# Time to expire items on dynamodb.
24752495
# CLI flag: -dynamodb.ttl-time
24762496
[ttl: <duration> | default = 0s]
@@ -3842,6 +3862,10 @@ ring:
38423862
# CLI flag: -ruler.ring.dynamodb.table-name
38433863
[table_name: <string> | default = ""]
38443864
3865+
# HTTP timeout when talking to dynamodb
3866+
# CLI flag: -ruler.ring.dynamodb.client-timeout
3867+
[http_client_timeout: <duration> | default = 20s]
3868+
38453869
# Time to expire items on dynamodb.
38463870
# CLI flag: -ruler.ring.dynamodb.ttl-time
38473871
[ttl: <duration> | default = 0s]
@@ -4437,6 +4461,10 @@ sharding_ring:
44374461
# CLI flag: -store-gateway.sharding-ring.dynamodb.table-name
44384462
[table_name: <string> | default = ""]
44394463
4464+
# HTTP timeout when talking to dynamodb
4465+
# CLI flag: -store-gateway.sharding-ring.dynamodb.client-timeout
4466+
[http_client_timeout: <duration> | default = 20s]
4467+
44404468
# Time to expire items on dynamodb.
44414469
# CLI flag: -store-gateway.sharding-ring.dynamodb.ttl-time
44424470
[ttl: <duration> | default = 0s]

pkg/ring/kv/dynamodb/client.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ import (
1515
"github.com/cortexproject/cortex/pkg/util/backoff"
1616
)
1717

18-
// Config to create a ConsulClient
18+
// Config to create a DynamoDBClient
1919
type Config struct {
20-
Region string `yaml:"region"`
21-
TableName string `yaml:"table_name"`
22-
TTL time.Duration `yaml:"ttl"`
20+
Region string `yaml:"region"`
21+
TableName string `yaml:"table_name"`
22+
HTTPClientTimeout time.Duration `yaml:"http_client_timeout"`
23+
TTL time.Duration `yaml:"ttl"`
2324
}
2425

2526
type Client struct {
@@ -52,6 +53,7 @@ var (
5253
func (cfg *Config) RegisterFlags(f *flag.FlagSet, prefix string) {
5354
f.StringVar(&cfg.Region, prefix+"dynamodb.region", "", "Region to access dynamodb.")
5455
f.StringVar(&cfg.TableName, prefix+"dynamodb.table-name", "", "Table name to use on dynamodb.")
56+
f.DurationVar(&cfg.TTL, prefix+"dynamodb.client-timeout", 20*time.Second, "Timeout for HTTP requests to dynamodb.")
5557
f.DurationVar(&cfg.TTL, prefix+"dynamodb.ttl-time", 0, "Time to expire items on dynamodb.")
5658
}
5759

pkg/ring/kv/dynamodb/dynamodb.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"math"
7+
"net/http"
78
"strconv"
89
"time"
910

@@ -59,7 +60,8 @@ func newDynamodbKV(cfg Config, logger log.Logger) (dynamodbKV, error) {
5960

6061
if len(cfg.Region) > 0 {
6162
sess.Config = &aws.Config{
62-
Region: aws.String(cfg.Region),
63+
Region: aws.String(cfg.Region),
64+
HTTPClient: &http.Client{Timeout: cfg.HTTPClientTimeout},
6365
}
6466
}
6567

0 commit comments

Comments
 (0)