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
b089f93292
commit
71379b9621
|
@ -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 {
|
func normalizeHTTPService(service HTTPService) HTTPService {
|
||||||
service.EnterpriseMeta.Normalize()
|
service.EnterpriseMeta.Normalize()
|
||||||
|
if service.Weight <= 0 {
|
||||||
|
service.Weight = 1
|
||||||
|
}
|
||||||
return service
|
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)
|
testConfigEntryNormalizeAndValidate(t, cases)
|
||||||
}
|
}
|
||||||
|
|
|
@ -630,7 +630,8 @@ Specifies the Enterprise [admin partition](/consul/docs/enterprise/admin-partiti
|
||||||
|
|
||||||
### `Rules[].Services[].Weight`
|
### `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
|
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
|
weights in the service list. For non-zero values, there may be some deviation
|
||||||
from the exact proportion depending on the precision an implementation
|
from the exact proportion depending on the precision an implementation
|
||||||
|
|
Loading…
Reference in New Issue