forked from TrueCloudLab/frostfs-s3-gw
[#750] Update SDK to support timeout for stream
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
3556fec9c1
commit
9c795c8639
8 changed files with 22 additions and 4 deletions
|
@ -8,6 +8,9 @@ This document outlines major changes between releases.
|
||||||
- Empty bucket policy (#740)
|
- Empty bucket policy (#740)
|
||||||
- Big object removal (#749)
|
- Big object removal (#749)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Timeout for individual operations in streaming RPC (#740)
|
||||||
|
|
||||||
## [0.25.0] - 2022-10-31
|
## [0.25.0] - 2022-10-31
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
@ -244,11 +244,17 @@ func getPool(ctx context.Context, logger *zap.Logger, cfg *viper.Viper) (*pool.P
|
||||||
}
|
}
|
||||||
prm.SetNodeDialTimeout(connTimeout)
|
prm.SetNodeDialTimeout(connTimeout)
|
||||||
|
|
||||||
|
streamTimeout := cfg.GetDuration(cfgStreamTimeout)
|
||||||
|
if streamTimeout <= 0 {
|
||||||
|
streamTimeout = defaultStreamTimeout
|
||||||
|
}
|
||||||
|
prm.SetNodeStreamTimeout(streamTimeout)
|
||||||
|
|
||||||
healthCheckTimeout := cfg.GetDuration(cfgHealthcheckTimeout)
|
healthCheckTimeout := cfg.GetDuration(cfgHealthcheckTimeout)
|
||||||
if healthCheckTimeout <= 0 {
|
if healthCheckTimeout <= 0 {
|
||||||
healthCheckTimeout = defaultHealthcheckTimeout
|
healthCheckTimeout = defaultHealthcheckTimeout
|
||||||
}
|
}
|
||||||
prm.SetNodeDialTimeout(healthCheckTimeout)
|
prm.SetHealthcheckTimeout(healthCheckTimeout)
|
||||||
|
|
||||||
rebalanceInterval := cfg.GetDuration(cfgRebalanceInterval)
|
rebalanceInterval := cfg.GetDuration(cfgRebalanceInterval)
|
||||||
if rebalanceInterval <= 0 {
|
if rebalanceInterval <= 0 {
|
||||||
|
|
|
@ -22,6 +22,7 @@ const (
|
||||||
defaultRebalanceInterval = 60 * time.Second
|
defaultRebalanceInterval = 60 * time.Second
|
||||||
defaultHealthcheckTimeout = 15 * time.Second
|
defaultHealthcheckTimeout = 15 * time.Second
|
||||||
defaultConnectTimeout = 10 * time.Second
|
defaultConnectTimeout = 10 * time.Second
|
||||||
|
defaultStreamTimeout = 10 * time.Second
|
||||||
defaultShutdownTimeout = 15 * time.Second
|
defaultShutdownTimeout = 15 * time.Second
|
||||||
|
|
||||||
defaultPoolErrorThreshold uint32 = 100
|
defaultPoolErrorThreshold uint32 = 100
|
||||||
|
@ -47,6 +48,7 @@ const ( // Settings.
|
||||||
|
|
||||||
// Pool config.
|
// Pool config.
|
||||||
cfgConnectTimeout = "connect_timeout"
|
cfgConnectTimeout = "connect_timeout"
|
||||||
|
cfgStreamTimeout = "stream_timeout"
|
||||||
cfgHealthcheckTimeout = "healthcheck_timeout"
|
cfgHealthcheckTimeout = "healthcheck_timeout"
|
||||||
cfgRebalanceInterval = "rebalance_interval"
|
cfgRebalanceInterval = "rebalance_interval"
|
||||||
cfgPoolErrorThreshold = "pool_error_threshold"
|
cfgPoolErrorThreshold = "pool_error_threshold"
|
||||||
|
@ -213,6 +215,7 @@ func newSettings() *viper.Viper {
|
||||||
|
|
||||||
// pool:
|
// pool:
|
||||||
v.SetDefault(cfgPoolErrorThreshold, defaultPoolErrorThreshold)
|
v.SetDefault(cfgPoolErrorThreshold, defaultPoolErrorThreshold)
|
||||||
|
v.SetDefault(cfgStreamTimeout, defaultStreamTimeout)
|
||||||
|
|
||||||
v.SetDefault(cfgPProfAddress, "localhost:8085")
|
v.SetDefault(cfgPProfAddress, "localhost:8085")
|
||||||
v.SetDefault(cfgPrometheusAddress, "localhost:8086")
|
v.SetDefault(cfgPrometheusAddress, "localhost:8086")
|
||||||
|
|
|
@ -53,6 +53,8 @@ S3_GW_PROMETHEUS_ADDRESS=localhost:8086
|
||||||
|
|
||||||
# Timeout to connect to a node
|
# Timeout to connect to a node
|
||||||
S3_GW_CONNECT_TIMEOUT=10s
|
S3_GW_CONNECT_TIMEOUT=10s
|
||||||
|
# Timeout for individual operations in streaming RPC.
|
||||||
|
S3_GW_STREAM_TIMEOUT=10s
|
||||||
# Timeout to check node health during rebalance.
|
# Timeout to check node health during rebalance.
|
||||||
S3_GW_HEALTHCHECK_TIMEOUT=15s
|
S3_GW_HEALTHCHECK_TIMEOUT=15s
|
||||||
# Interval to check node health
|
# Interval to check node health
|
||||||
|
|
|
@ -58,6 +58,8 @@ prometheus:
|
||||||
|
|
||||||
# Timeout to connect to a node
|
# Timeout to connect to a node
|
||||||
connect_timeout: 10s
|
connect_timeout: 10s
|
||||||
|
# Timeout for individual operations in streaming RPC.
|
||||||
|
stream_timeout: 10s
|
||||||
# Timeout to check node health during rebalance
|
# Timeout to check node health during rebalance
|
||||||
healthcheck_timeout: 15s
|
healthcheck_timeout: 15s
|
||||||
# Interval to check node health
|
# Interval to check node health
|
||||||
|
|
|
@ -179,6 +179,7 @@ resolve_order:
|
||||||
- dns
|
- dns
|
||||||
|
|
||||||
connect_timeout: 10s
|
connect_timeout: 10s
|
||||||
|
stream_timeout: 10s
|
||||||
healthcheck_timeout: 15s
|
healthcheck_timeout: 15s
|
||||||
rebalance_interval: 60s
|
rebalance_interval: 60s
|
||||||
pool_error_threshold: 100
|
pool_error_threshold: 100
|
||||||
|
@ -200,6 +201,7 @@ allowed_access_key_id_prefixes:
|
||||||
| `rpc_endpoint` | `string` | yes | | The address of the RPC host to which the gateway connects to resolve bucket names (required to use the `nns` resolver). |
|
| `rpc_endpoint` | `string` | yes | | The address of the RPC host to which the gateway connects to resolve bucket names (required to use the `nns` resolver). |
|
||||||
| `resolve_order` | `[]string` | yes | `[dns]` | Order of bucket name resolvers to use. Available resolvers: `dns`, `nns`. | |
|
| `resolve_order` | `[]string` | yes | `[dns]` | Order of bucket name resolvers to use. Available resolvers: `dns`, `nns`. | |
|
||||||
| `connect_timeout` | `duration` | | `10s` | Timeout to connect to a node. |
|
| `connect_timeout` | `duration` | | `10s` | Timeout to connect to a node. |
|
||||||
|
| `stream_timeout` | `duration` | | `10s` | Timeout for individual operations in streaming RPC. |
|
||||||
| `healthcheck_timeout` | `duration` | | `15s` | Timeout to check node health during rebalance. |
|
| `healthcheck_timeout` | `duration` | | `15s` | Timeout to check node health during rebalance. |
|
||||||
| `rebalance_interval` | `duration` | | `60s` | Interval to check node health. |
|
| `rebalance_interval` | `duration` | | `60s` | Interval to check node health. |
|
||||||
| `pool_error_threshold` | `uint32` | | `100` | The number of errors on connection after which node is considered as unhealthy. |
|
| `pool_error_threshold` | `uint32` | | `100` | The number of errors on connection after which node is considered as unhealthy. |
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -11,7 +11,7 @@ require (
|
||||||
github.com/nats-io/nats.go v1.13.1-0.20220121202836-972a071d373d
|
github.com/nats-io/nats.go v1.13.1-0.20220121202836-972a071d373d
|
||||||
github.com/nspcc-dev/neo-go v0.99.4
|
github.com/nspcc-dev/neo-go v0.99.4
|
||||||
github.com/nspcc-dev/neofs-api-go/v2 v2.14.0
|
github.com/nspcc-dev/neofs-api-go/v2 v2.14.0
|
||||||
github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.7.0.20221114144617-d047289182a1
|
github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.7.0.20221115140820-b4b07a3c4e11
|
||||||
github.com/panjf2000/ants/v2 v2.5.0
|
github.com/panjf2000/ants/v2 v2.5.0
|
||||||
github.com/prometheus/client_golang v1.13.0
|
github.com/prometheus/client_golang v1.13.0
|
||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -374,8 +374,8 @@ github.com/nspcc-dev/neofs-crypto v0.4.0 h1:5LlrUAM5O0k1+sH/sktBtrgfWtq1pgpDs09f
|
||||||
github.com/nspcc-dev/neofs-crypto v0.4.0/go.mod h1:6XJ8kbXgOfevbI2WMruOtI+qUJXNwSGM/E9eClXxPHs=
|
github.com/nspcc-dev/neofs-crypto v0.4.0/go.mod h1:6XJ8kbXgOfevbI2WMruOtI+qUJXNwSGM/E9eClXxPHs=
|
||||||
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20211201182451-a5b61c4f6477/go.mod h1:dfMtQWmBHYpl9Dez23TGtIUKiFvCIxUZq/CkSIhEpz4=
|
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20211201182451-a5b61c4f6477/go.mod h1:dfMtQWmBHYpl9Dez23TGtIUKiFvCIxUZq/CkSIhEpz4=
|
||||||
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220113123743-7f3162110659/go.mod h1:/jay1lr3w7NQd/VDBkEhkJmDmyPNsu4W+QV2obsUV40=
|
github.com/nspcc-dev/neofs-sdk-go v0.0.0-20220113123743-7f3162110659/go.mod h1:/jay1lr3w7NQd/VDBkEhkJmDmyPNsu4W+QV2obsUV40=
|
||||||
github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.7.0.20221114144617-d047289182a1 h1:SAB+pu0aXXxOsBxBNZG9F5c1YLCpSAW5HhBI5Id43d8=
|
github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.7.0.20221115140820-b4b07a3c4e11 h1:dcofGaVR6najaIdh0JOXoxqV1MLJWnJ3pPMhD5gowV4=
|
||||||
github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.7.0.20221114144617-d047289182a1/go.mod h1:7bH8zabbewpXstaXKoV0Tk3lV7KFYadi5edLU5yDERY=
|
github.com/nspcc-dev/neofs-sdk-go v1.0.0-rc.7.0.20221115140820-b4b07a3c4e11/go.mod h1:7bH8zabbewpXstaXKoV0Tk3lV7KFYadi5edLU5yDERY=
|
||||||
github.com/nspcc-dev/rfc6979 v0.1.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso=
|
github.com/nspcc-dev/rfc6979 v0.1.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso=
|
||||||
github.com/nspcc-dev/rfc6979 v0.2.0 h1:3e1WNxrN60/6N0DW7+UYisLeZJyfqZTNOjeV/toYvOE=
|
github.com/nspcc-dev/rfc6979 v0.2.0 h1:3e1WNxrN60/6N0DW7+UYisLeZJyfqZTNOjeV/toYvOE=
|
||||||
github.com/nspcc-dev/rfc6979 v0.2.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso=
|
github.com/nspcc-dev/rfc6979 v0.2.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso=
|
||||||
|
|
Loading…
Reference in a new issue