5151import io .grpc .internal .ObjectPool ;
5252import io .grpc .xds .ClusterSpecifierPlugin .PluginConfig ;
5353import io .grpc .xds .Filter .FilterConfig ;
54+ import io .grpc .xds .Filter .FilterContext ;
5455import io .grpc .xds .Filter .NamedFilterConfig ;
5556import io .grpc .xds .RouteLookupServiceClusterSpecifierPlugin .RlsPluginConfig ;
5657import io .grpc .xds .ThreadSafeRandom .ThreadSafeRandomImpl ;
@@ -121,7 +122,6 @@ final class XdsNameResolver extends NameResolver {
121122 private final ThreadSafeRandom random ;
122123 private final FilterRegistry filterRegistry ;
123124 private final XxHash64 hashFunc = XxHash64 .INSTANCE ;
124- // Clusters (with reference counts) to which new/existing requests can be/are routed.
125125 // put()/remove() must be called in SyncContext, and get() can be called in any thread.
126126 private final ConcurrentMap <String , ClusterRefState > clusterRefs = new ConcurrentHashMap <>();
127127 private final ConfigSelector configSelector = new ConfigSelector ();
@@ -138,6 +138,7 @@ final class XdsNameResolver extends NameResolver {
138138 private CallCounterProvider callCounterProvider ;
139139 private ResolveState resolveState ;
140140
141+
141142 /**
142143 * Constructs a new instance.
143144 *
@@ -742,7 +743,9 @@ private void updateActiveFilters(@Nullable List<NamedFilterConfig> filterConfigs
742743 Filter .Provider provider = filterRegistry .get (typeUrl );
743744 checkNotNull (provider , "provider %s" , typeUrl );
744745 Filter filter = activeFilters .computeIfAbsent (
745- filterKey , k -> provider .newInstance (namedFilter .name ));
746+ filterKey , k -> provider .newInstance (
747+ FilterContext .create (
748+ namedFilter .name , nameResolverArgs .getMetricRecorder ())));
746749 checkNotNull (filter , "filter %s" , filterKey );
747750 filtersToShutdown .remove (filterKey );
748751 }
0 commit comments