From 8979e64a94a23d6b872c1f3e67922e937c84afb4 Mon Sep 17 00:00:00 2001 From: Semir Patel Date: Mon, 13 Feb 2023 11:11:51 -0600 Subject: [PATCH] Bump x/time to 0.3.0 and fix related breakage linked to RPCRateLimit (#16241) * Bump x/time to 0.3.0 and fix related breakage linked to RPCRateLimit initialization * Apply limitVal(...) to other rate.Limit config fields --- agent/config/builder.go | 13 +++++++++---- agent/config/runtime_test.go | 2 ++ go.mod | 6 +----- go.sum | 11 +++++++++-- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/agent/config/builder.go b/agent/config/builder.go index aa25c07232..f682bf7b14 100644 --- a/agent/config/builder.go +++ b/agent/config/builder.go @@ -954,8 +954,8 @@ func (b *builder) build() (rt RuntimeConfig, err error) { Bootstrap: boolVal(c.Bootstrap), BootstrapExpect: intVal(c.BootstrapExpect), Cache: cache.Options{ - EntryFetchRate: rate.Limit( - float64ValWithDefault(c.Cache.EntryFetchRate, float64(cache.DefaultEntryFetchRate)), + EntryFetchRate: limitValWithDefault( + c.Cache.EntryFetchRate, float64(cache.DefaultEntryFetchRate), ), EntryFetchMaxBurst: intValWithDefault( c.Cache.EntryFetchMaxBurst, cache.DefaultEntryFetchMaxBurst, @@ -1045,7 +1045,7 @@ func (b *builder) build() (rt RuntimeConfig, err error) { RPCMaxBurst: intVal(c.Limits.RPCMaxBurst), RPCMaxConnsPerClient: intVal(c.Limits.RPCMaxConnsPerClient), RPCProtocol: intVal(c.RPCProtocol), - RPCRateLimit: rate.Limit(float64Val(c.Limits.RPCRate)), + RPCRateLimit: limitVal(c.Limits.RPCRate), RPCConfig: consul.RPCConfig{EnableStreaming: boolValWithDefault(c.RPC.EnableStreaming, serverMode)}, RaftProtocol: intVal(c.RaftProtocol), RaftSnapshotThreshold: intVal(c.RaftSnapshotThreshold), @@ -1089,7 +1089,7 @@ func (b *builder) build() (rt RuntimeConfig, err error) { UnixSocketMode: stringVal(c.UnixSocket.Mode), UnixSocketUser: stringVal(c.UnixSocket.User), Watches: c.Watches, - XDSUpdateRateLimit: rate.Limit(float64Val(c.XDS.UpdateMaxPerSecond)), + XDSUpdateRateLimit: limitVal(c.XDS.UpdateMaxPerSecond), AutoReloadConfigCoalesceInterval: 1 * time.Second, } @@ -2034,6 +2034,11 @@ func limitVal(v *float64) rate.Limit { return rate.Limit(f) } +func limitValWithDefault(v *float64, defaultVal float64) rate.Limit { + f := float64ValWithDefault(v, defaultVal) + return limitVal(&f) +} + func (b *builder) cidrsVal(name string, v []string) (nets []*net.IPNet) { if v == nil { return diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index 80db6e1c4b..2954dee670 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -4646,6 +4646,8 @@ func TestLoad_IntegrationWithFlags(t *testing.T) { rt.RequestLimitsWriteRate = rate.Inf rt.SegmentLimit = 64 rt.XDSUpdateRateLimit = 250 + rt.RPCRateLimit = rate.Inf + rt.RPCMaxBurst = 1000 }, }) diff --git a/go.mod b/go.mod index 0a7f18f041..5a38efd9dc 100644 --- a/go.mod +++ b/go.mod @@ -8,10 +8,6 @@ replace ( github.com/hashicorp/consul/proto-public => ./proto-public github.com/hashicorp/consul/sdk => ./sdk github.com/hashicorp/consul/troubleshoot => ./troubleshoot - // pinning this x/time version because consul-k8s acceptance tests fail - // with client rate limiting issues with newer versions of this package. - // This is tracked in NET-2284 - golang.org/x/time => golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e ) exclude ( @@ -102,7 +98,7 @@ require ( golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 golang.org/x/sys v0.3.0 - golang.org/x/time v0.1.0 + golang.org/x/time v0.3.0 google.golang.org/genproto v0.0.0-20220921223823-23cae91e6737 google.golang.org/grpc v1.49.0 google.golang.org/protobuf v1.28.1 diff --git a/go.sum b/go.sum index e32c7478f4..7234a8e027 100644 --- a/go.sum +++ b/go.sum @@ -1333,8 +1333,15 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=