mirror of https://github.com/status-im/consul.git
NET-2903 Normalize weight for http routes (#16512)
* NET-2903 Normalize weight for http routes * Update website/content/docs/connect/gateways/api-gateway/configuration/http-route.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com>
This commit is contained in:
parent
9a485cdb49
commit
129eca8fdb
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
gateways: fix HTTPRoute bug where service weights could be less than or equal to 0 and result in a downstream envoy protocol error
|
||||
```
|
|
@ -100,7 +100,9 @@ func (e *HTTPRouteConfigEntry) Normalize() error {
|
|||
|
||||
func normalizeHTTPService(service HTTPService) HTTPService {
|
||||
service.EnterpriseMeta.Normalize()
|
||||
|
||||
if service.Weight <= 0 {
|
||||
service.Weight = 1
|
||||
}
|
||||
return service
|
||||
}
|
||||
|
||||
|
|
|
@ -262,6 +262,28 @@ func TestHTTPRoute(t *testing.T) {
|
|||
}},
|
||||
},
|
||||
},
|
||||
"rule normalizes service weight": {
|
||||
entry: &HTTPRouteConfigEntry{
|
||||
Kind: HTTPRoute,
|
||||
Name: "route-one",
|
||||
Rules: []HTTPRouteRule{{
|
||||
Services: []HTTPService{
|
||||
{
|
||||
Name: "test",
|
||||
Weight: 0,
|
||||
},
|
||||
{
|
||||
Name: "test2",
|
||||
Weight: -1,
|
||||
}},
|
||||
}},
|
||||
},
|
||||
check: func(t *testing.T, entry ConfigEntry) {
|
||||
route := entry.(*HTTPRouteConfigEntry)
|
||||
require.Equal(t, 1, route.Rules[0].Services[0].Weight)
|
||||
require.Equal(t, 1, route.Rules[0].Services[1].Weight)
|
||||
},
|
||||
},
|
||||
}
|
||||
testConfigEntryNormalizeAndValidate(t, cases)
|
||||
}
|
||||
|
|
|
@ -630,7 +630,8 @@ Specifies the Enterprise [admin partition](/consul/docs/enterprise/admin-partiti
|
|||
|
||||
### `Rules[].Services[].Weight`
|
||||
|
||||
Specifies the proportion of requests forwarded to the specified service. The
|
||||
Specifies the proportion of requests forwarded to the specified service. If no weight is specified, or if the specified
|
||||
weight is set to less than or equal to `0`, the weight is normalized to `1`. The
|
||||
proportion is determined by dividing the value of the weight by the sum of all
|
||||
weights in the service list. For non-zero values, there may be some deviation
|
||||
from the exact proportion depending on the precision an implementation
|
||||
|
|
Loading…
Reference in New Issue