Skip to content

Commit 48f5673

Browse files
committed
add Filter.isEnabled()
1 parent f52cd59 commit 48f5673

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

xds/src/main/java/io/grpc/xds/Filter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ interface Filter {
3838
*/
3939
String[] typeUrls();
4040

41+
default boolean isEnabled() {
42+
return true;
43+
}
44+
4145
/**
4246
* Parses the top-level filter config from raw proto message. The message may be either a {@link
4347
* com.google.protobuf.Any} or a {@link com.google.protobuf.Struct}.

xds/src/main/java/io/grpc/xds/FilterRegistry.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ static FilterRegistry newRegistry() {
5151
@VisibleForTesting
5252
FilterRegistry register(Filter... filters) {
5353
for (Filter filter : filters) {
54+
if (!filter.isEnabled()) {
55+
continue;
56+
}
5457
for (String typeUrl : filter.typeUrls()) {
5558
supportedFilters.put(typeUrl, filter);
5659
}

xds/src/main/java/io/grpc/xds/RlqsFilter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import io.grpc.ServerCall.Listener;
3333
import io.grpc.ServerCallHandler;
3434
import io.grpc.ServerInterceptor;
35+
import io.grpc.internal.GrpcUtil;
3536
import io.grpc.xds.Filter.ServerInterceptorBuilder;
3637
import io.grpc.xds.internal.datatype.GrpcService;
3738
import io.grpc.xds.internal.matchers.HttpMatchInput;
@@ -50,7 +51,7 @@
5051
// TODO(sergiitk): introduce a layer between the filter and interceptor.
5152
// lds has filter names and the names are unique - even for server instances.
5253
final class RlqsFilter implements Filter, ServerInterceptorBuilder {
53-
// private static final Logger logger = Logger.getLogger(RlqsFilter.class.getName());
54+
static final boolean enabled = GrpcUtil.getFlag("GRPC_EXPERIMENTAL_XDS_ENABLE_RLQS", false);
5455

5556
static final RlqsFilter INSTANCE = new RlqsFilter();
5657

@@ -66,6 +67,11 @@ public String[] typeUrls() {
6667
return new String[]{TYPE_URL, TYPE_URL_OVERRIDE_CONFIG};
6768
}
6869

70+
@Override
71+
public boolean isEnabled() {
72+
return enabled;
73+
}
74+
6975
@Override
7076
public ConfigOrError<RlqsFilterConfig> parseFilterConfig(Message rawProtoMessage) {
7177
try {

xds/src/test/java/io/grpc/xds/XdsServerWrapperTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,6 +1118,8 @@ public void run() {
11181118
Filter filter = mock(Filter.class, withSettings()
11191119
.extraInterfaces(ServerInterceptorBuilder.class));
11201120
when(filter.typeUrls()).thenReturn(new String[]{"filter-type-url"});
1121+
when(filter.isEnabled()).thenCallRealMethod();
1122+
assertThat(filter.isEnabled()).isTrue();
11211123
filterRegistry.register(filter);
11221124
FilterConfig f0 = mock(FilterConfig.class);
11231125
FilterConfig f0Override = mock(FilterConfig.class);
@@ -1191,6 +1193,8 @@ public void run() {
11911193
Filter filter = mock(Filter.class, withSettings()
11921194
.extraInterfaces(ServerInterceptorBuilder.class));
11931195
when(filter.typeUrls()).thenReturn(new String[]{"filter-type-url"});
1196+
when(filter.isEnabled()).thenCallRealMethod();
1197+
assertThat(filter.isEnabled()).isTrue();
11941198
filterRegistry.register(filter);
11951199
FilterConfig f0 = mock(FilterConfig.class);
11961200
FilterConfig f0Override = mock(FilterConfig.class);

0 commit comments

Comments
 (0)