Skip to content

Commit 1df95d0

Browse files
aepflitoddbaert
authored andcommitted
fixup: spotless and gemini feedback
Signed-off-by: Simon Schrottner <[email protected]>
1 parent 5a22bf8 commit 1df95d0

File tree

3 files changed

+16
-45
lines changed

3 files changed

+16
-45
lines changed

providers/flagd/README.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@ export FLAGD_SOURCE_SELECTOR="source=my-app"
8585
>
8686
> Users do not need to make any code changes. The SDK handles selector normalization automatically.
8787
88-
**Backward compatibility:**
89-
- Both header and request body approaches work with current flagd versions
90-
- Older flagd versions that only support request body selectors are still supported
91-
- Future flagd versions may remove request body selector support, but the SDK will continue to work using headers
92-
9388
For more details on selector normalization, see the [flagd selector normalization issue](https://github.com/open-feature/flagd/issues/1814).
9489

9590
#### Sync-metadata

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/common/ChannelBuilder.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
/** gRPC channel builder helper. */
3434
@SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "we don't care to serialize this")
3535
public class ChannelBuilder {
36+
37+
private static final Metadata.Key<String> FLAGD_SELECTOR_KEY =
38+
Metadata.Key.of("flagd-selector", Metadata.ASCII_STRING_MARSHALLER);
39+
3640
/**
3741
* Controls retry (not-reconnection) policy for failed RPCs.
3842
*/
@@ -128,14 +132,14 @@ public static ManagedChannel nettyChannel(final FlagdOptions options) {
128132
final String defaultTarget = String.format("%s:%s", options.getHost(), options.getPort());
129133
final String targetUri = isValidTargetUri(options.getTargetUri()) ? options.getTargetUri() : defaultTarget;
130134

131-
final NettyChannelBuilder builder =
135+
final NettyChannelBuilder channelBuilder =
132136
NettyChannelBuilder.forTarget(targetUri).keepAliveTime(keepAliveMs, TimeUnit.MILLISECONDS);
133137

134138
if (options.getDefaultAuthority() != null) {
135-
builder.overrideAuthority(options.getDefaultAuthority());
139+
channelBuilder.overrideAuthority(options.getDefaultAuthority());
136140
}
137141
if (options.getClientInterceptors() != null) {
138-
builder.intercept(options.getClientInterceptors());
142+
channelBuilder.intercept(options.getClientInterceptors());
139143
}
140144
if (options.isTls()) {
141145
SslContextBuilder sslContext = GrpcSslContexts.forClient();
@@ -147,17 +151,21 @@ public static ManagedChannel nettyChannel(final FlagdOptions options) {
147151
}
148152
}
149153

150-
builder.sslContext(sslContext.build());
154+
channelBuilder.sslContext(sslContext.build());
151155
} else {
152-
builder.usePlaintext();
156+
channelBuilder.usePlaintext();
153157
}
154158

155159
// telemetry interceptor if option is provided
156160
if (options.getOpenTelemetry() != null) {
157-
builder.intercept(new FlagdGrpcInterceptor(options.getOpenTelemetry()));
161+
channelBuilder.intercept(new FlagdGrpcInterceptor(options.getOpenTelemetry()));
162+
}
163+
// add header-based selector interceptor if selector is provided
164+
if (options.getSelector() != null) {
165+
channelBuilder.intercept(createSelectorInterceptor(options.getSelector()));
158166
}
159167

160-
return builder.defaultServiceConfig(buildRetryPolicy(options))
168+
return channelBuilder.defaultServiceConfig(buildRetryPolicy(options))
161169
.enableRetry()
162170
.build();
163171
} catch (SSLException ssle) {
@@ -188,7 +196,7 @@ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
188196
next.newCall(method, callOptions)) {
189197
@Override
190198
public void start(Listener<RespT> responseListener, Metadata headers) {
191-
headers.put(Metadata.Key.of("flagd-selector", Metadata.ASCII_STRING_MARSHALLER), selector);
199+
headers.put(FLAGD_SELECTOR_KEY, selector);
192200
super.start(responseListener, headers);
193201
}
194202
};

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/sync/SyncStreamQueueSource.java

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,6 @@
1616
import dev.openfeature.flagd.grpc.sync.Sync.SyncFlagsResponse;
1717
import dev.openfeature.sdk.Awaitable;
1818
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
19-
import io.grpc.CallOptions;
20-
import io.grpc.Channel;
21-
import io.grpc.ClientCall;
22-
import io.grpc.ClientInterceptor;
23-
import io.grpc.ForwardingClientCall;
24-
import io.grpc.Metadata;
25-
import io.grpc.MethodDescriptor;
2619
import io.grpc.Status;
2720
import io.grpc.StatusRuntimeException;
2821
import io.grpc.stub.StreamObserver;
@@ -42,7 +35,6 @@
4235
justification = "We need to expose the BlockingQueue to allow consumers to read from it")
4336
public class SyncStreamQueueSource implements QueueSource {
4437
private static final int QUEUE_SIZE = 5;
45-
4638
private final AtomicBoolean shutdown = new AtomicBoolean(false);
4739
private final AtomicBoolean shouldThrottle = new AtomicBoolean(false);
4840
private final int streamDeadline;
@@ -275,30 +267,6 @@ private void syncFlags(SyncStreamObserver streamObserver) {
275267
streamObserver.done.await();
276268
}
277269

278-
/**
279-
* Creates a ClientInterceptor that adds the flagd-selector header to gRPC requests.
280-
* This is the preferred approach for passing selectors as per flagd issue #1814.
281-
*
282-
* @param selector the selector value to pass in the header
283-
* @return a ClientInterceptor that adds the flagd-selector header
284-
*/
285-
private static ClientInterceptor createSelectorInterceptor(String selector) {
286-
return new ClientInterceptor() {
287-
@Override
288-
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
289-
MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
290-
return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(
291-
next.newCall(method, callOptions)) {
292-
@Override
293-
public void start(Listener<RespT> responseListener, Metadata headers) {
294-
headers.put(Metadata.Key.of("flagd-selector", Metadata.ASCII_STRING_MARSHALLER), selector);
295-
super.start(responseListener, headers);
296-
}
297-
};
298-
}
299-
};
300-
}
301-
302270
private void enqueueError(String message) {
303271
enqueueError(outgoingQueue, message);
304272
}

0 commit comments

Comments
 (0)