|
|
@ -1347,7 +1347,7 @@ grpc_error* DropParseAndAppend( |
|
|
|
return GRPC_ERROR_NONE; |
|
|
|
return GRPC_ERROR_NONE; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
grpc_error* EdsResponsedParse( |
|
|
|
grpc_error* EdsResponseParse( |
|
|
|
XdsClient* client, TraceFlag* tracer, |
|
|
|
XdsClient* client, TraceFlag* tracer, |
|
|
|
const envoy_api_v2_DiscoveryResponse* response, |
|
|
|
const envoy_api_v2_DiscoveryResponse* response, |
|
|
|
const std::set<StringView>& expected_eds_service_names, |
|
|
|
const std::set<StringView>& expected_eds_service_names, |
|
|
@ -1397,6 +1397,14 @@ grpc_error* EdsResponsedParse( |
|
|
|
if (locality.lb_weight == 0) continue; |
|
|
|
if (locality.lb_weight == 0) continue; |
|
|
|
eds_update.priority_list_update.Add(locality); |
|
|
|
eds_update.priority_list_update.Add(locality); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (uint32_t priority = 0; |
|
|
|
|
|
|
|
priority < eds_update.priority_list_update.size(); ++priority) { |
|
|
|
|
|
|
|
auto* locality_map = eds_update.priority_list_update.Find(priority); |
|
|
|
|
|
|
|
if (locality_map == nullptr || locality_map->size() == 0) { |
|
|
|
|
|
|
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING( |
|
|
|
|
|
|
|
"EDS update includes sparse priority list"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
// Get the drop config.
|
|
|
|
// Get the drop config.
|
|
|
|
eds_update.drop_config = MakeRefCounted<XdsApi::DropConfig>(); |
|
|
|
eds_update.drop_config = MakeRefCounted<XdsApi::DropConfig>(); |
|
|
|
const envoy_api_v2_ClusterLoadAssignment_Policy* policy = |
|
|
|
const envoy_api_v2_ClusterLoadAssignment_Policy* policy = |
|
|
@ -1471,9 +1479,9 @@ grpc_error* XdsApi::ParseAdsResponse( |
|
|
|
return CdsResponseParse(client_, tracer_, response, expected_cluster_names, |
|
|
|
return CdsResponseParse(client_, tracer_, response, expected_cluster_names, |
|
|
|
cds_update_map, arena.ptr()); |
|
|
|
cds_update_map, arena.ptr()); |
|
|
|
} else if (*type_url == kEdsTypeUrl) { |
|
|
|
} else if (*type_url == kEdsTypeUrl) { |
|
|
|
return EdsResponsedParse(client_, tracer_, response, |
|
|
|
return EdsResponseParse(client_, tracer_, response, |
|
|
|
expected_eds_service_names, eds_update_map, |
|
|
|
expected_eds_service_names, eds_update_map, |
|
|
|
arena.ptr()); |
|
|
|
arena.ptr()); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING( |
|
|
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING( |
|
|
|
"Unsupported ADS resource type."); |
|
|
|
"Unsupported ADS resource type."); |
|
|
|