-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Closed
Description
According to the original design:
An RLS request is considered to have succeeded if it returns an OK status and the
RLS response's targets list contains at least one non-empty entry.
We are currently handling the case of a response with zero targets the same way we would handle a successful response. This means that when an RPC is made, the cache entry will not have any READY child policy wrappers, and hence will be queued until the RPC context expires. Instead, we should treat this case as an error and set the cache entry in backoff. The code that handles an RLS response is here:
grpc-go/balancer/rls/picker.go
Line 216 in 32e3ef1
func (p *rlsPicker) handleRouteLookupResponse(cacheKey cacheKey, targets []string, headerData string, err error) { |