java-topology/defects/grpc-java/patch/grpc-java-0001-priority-lb-priority-names-list-contains.patch

31 lines
1.5 KiB
Diff

# UNDF: UNDF-2026-000000742
# UNDF: (leave blank)
--- a/xds/src/main/java/io/grpc/xds/PriorityLoadBalancer.java
+++ b/xds/src/main/java/io/grpc/xds/PriorityLoadBalancer.java
@@ -65,7 +65,7 @@ final class PriorityLoadBalancer extends LoadBalancer {
private ResolvedAddresses resolvedAddresses;
// List of priority names in order.
private List<String> priorityNames;
+ private Set<String> priorityNamesSet = new HashSet<>();
// Config for each priority.
private Map<String, PriorityChildConfig> priorityConfigs;
@@ -89,6 +89,7 @@ final class PriorityLoadBalancer extends LoadBalancer {
checkNotNull(config, "missing priority lb config");
priorityNames = config.priorities;
+ priorityNamesSet = new HashSet<>(config.priorities);
priorityConfigs = config.childConfigs;
Status status = Status.OK;
- Set<String> prioritySet = new HashSet<>(config.priorities);
+ Set<String> prioritySet = priorityNamesSet;
ArrayList<String> childKeys = new ArrayList<>(children.keySet());
for (String priority : childKeys) {
if (!prioritySet.contains(priority)) {
@@ -122,7 +126,7 @@ final class PriorityLoadBalancer extends LoadBalancer {
Collection<ChildLbState> childValues = new ArrayList<>(children.values());
for (ChildLbState child : childValues) {
- if (priorityNames.contains(child.priority)) {
+ if (priorityNamesSet.contains(child.priority)) {
child.lb.handleNameResolutionError(error);
gotoTransientFailure = false;
}