Skip to content

Commit c13c172

Browse files
authored
Merge branch 'main' into feat/improve-error-handling
2 parents e9405c1 + 5f75991 commit c13c172

File tree

14 files changed

+97
-19
lines changed

14 files changed

+97
-19
lines changed

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[submodule "providers/flagd/test-harness"]
55
path = providers/flagd/test-harness
66
url = https://github.com/open-feature/test-harness.git
7-
branch = v2.1.0
7+
branch = v2.2.0
88
[submodule "providers/flagd/spec"]
99
path = providers/flagd/spec
1010
url = https://github.com/open-feature/spec.git

.release-please-manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"providers/flagd": "0.10.5",
2+
"providers/flagd": "0.11.2",
33
"hooks/open-telemetry": "3.2.1",
44
"providers/go-feature-flag": "0.4.2",
55
"providers/flagsmith": "0.0.9",

providers/flagd/CHANGELOG.md

+66
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,71 @@
11
# Changelog
22

3+
## [0.11.2](https://github.com/open-feature/java-sdk-contrib/compare/dev.openfeature.contrib.providers.flagd-v0.11.1...dev.openfeature.contrib.providers.flagd-v0.11.2) (2025-02-13)
4+
5+
6+
### 🐛 Bug Fixes
7+
8+
* selector not being sent in sync call ([#1220](https://github.com/open-feature/java-sdk-contrib/issues/1220)) ([99e25ce](https://github.com/open-feature/java-sdk-contrib/commit/99e25cead7c501e62a454b0ff37fe971b9fd5b13))
9+
10+
11+
### 🧹 Chore
12+
13+
* **flagd:** Improve grpc logging ([#1219](https://github.com/open-feature/java-sdk-contrib/issues/1219)) ([34f83c5](https://github.com/open-feature/java-sdk-contrib/commit/34f83c5933ab5f2df81af348036f9c403c7963af))
14+
15+
## [0.11.1](https://github.com/open-feature/java-sdk-contrib/compare/dev.openfeature.contrib.providers.flagd-v0.11.0...dev.openfeature.contrib.providers.flagd-v0.11.1) (2025-02-12)
16+
17+
18+
### 🐛 Bug Fixes
19+
20+
* missing common lang dep ([#1216](https://github.com/open-feature/java-sdk-contrib/issues/1216)) ([379a89d](https://github.com/open-feature/java-sdk-contrib/commit/379a89d0563982dcb65ca060678d049e2e39f264))
21+
22+
## [0.11.0](https://github.com/open-feature/java-sdk-contrib/compare/dev.openfeature.contrib.providers.flagd-v0.10.5...dev.openfeature.contrib.providers.flagd-v0.11.0) (2025-02-12)
23+
24+
25+
### ⚠ BREAKING CHANGES
26+
27+
* implement grpc reconnect for inprocess mode ([#1150](https://github.com/open-feature/java-sdk-contrib/issues/1150))
28+
* Use grpc intern reconnections for rpc event stream ([#1112](https://github.com/open-feature/java-sdk-contrib/issues/1112))
29+
30+
### 🐛 Bug Fixes
31+
32+
* **deps:** update dependency com.google.code.gson:gson to v2.12.0 ([#1184](https://github.com/open-feature/java-sdk-contrib/issues/1184)) ([40795a6](https://github.com/open-feature/java-sdk-contrib/commit/40795a6e52295e56f0604ea7a6c8fe61c1e1c04e))
33+
* **deps:** update dependency com.google.code.gson:gson to v2.12.1 ([#1188](https://github.com/open-feature/java-sdk-contrib/issues/1188)) ([c24ef48](https://github.com/open-feature/java-sdk-contrib/commit/c24ef489910bf11a5be4b9f554d979fb739690b4))
34+
* **deps:** update dependency com.google.protobuf:protobuf-java to v3.25.6 ([#1178](https://github.com/open-feature/java-sdk-contrib/issues/1178)) ([417c6df](https://github.com/open-feature/java-sdk-contrib/commit/417c6df6b7e47dd2cd7a335af4846e331e8b5cea))
35+
* **deps:** update dependency com.networknt:json-schema-validator to v1.5.5 ([#1156](https://github.com/open-feature/java-sdk-contrib/issues/1156)) ([514004f](https://github.com/open-feature/java-sdk-contrib/commit/514004fa77180c12bf24c64aba83b3b37471f0c7))
36+
* **deps:** update dependency commons-codec:commons-codec to v1.17.2 ([#1145](https://github.com/open-feature/java-sdk-contrib/issues/1145)) ([ee91441](https://github.com/open-feature/java-sdk-contrib/commit/ee91441b97b0622d54bc36d1be9be85f7f2372c6))
37+
* **deps:** update dependency commons-codec:commons-codec to v1.18.0 ([#1181](https://github.com/open-feature/java-sdk-contrib/issues/1181)) ([d49d98f](https://github.com/open-feature/java-sdk-contrib/commit/d49d98fa573b677b4c34abf38e1e0e8d351aa0e2))
38+
* **deps:** update dependency io.netty:netty-transport-native-epoll to v4.1.117.final ([#1155](https://github.com/open-feature/java-sdk-contrib/issues/1155)) ([5a293bb](https://github.com/open-feature/java-sdk-contrib/commit/5a293bbd2ee387d62f3f27e617e79e143d4e8b06))
39+
* **deps:** update dependency io.netty:netty-transport-native-epoll to v4.1.118.final ([#1212](https://github.com/open-feature/java-sdk-contrib/issues/1212)) ([7e5ced2](https://github.com/open-feature/java-sdk-contrib/commit/7e5ced2c469e1286a8d21c5aba67eb5342a91831))
40+
* **deps:** update dependency io.opentelemetry:opentelemetry-api to v1.46.0 ([#1151](https://github.com/open-feature/java-sdk-contrib/issues/1151)) ([8fb4194](https://github.com/open-feature/java-sdk-contrib/commit/8fb41945fe5c5a5d1ec0847ed3eaa595629b4362))
41+
* **deps:** update dependency org.semver4j:semver4j to v5.6.0 ([#1171](https://github.com/open-feature/java-sdk-contrib/issues/1171)) ([23c5e69](https://github.com/open-feature/java-sdk-contrib/commit/23c5e6965426f6fc8fdbf6c9ee7941519402d774))
42+
* **deps:** update grpc-java monorepo to v1.69.1 ([#1161](https://github.com/open-feature/java-sdk-contrib/issues/1161)) ([23db163](https://github.com/open-feature/java-sdk-contrib/commit/23db16318ef5d7cff3f6a701717addfef0d482cc))
43+
* **deps:** update grpc-java monorepo to v1.70.0 ([#1172](https://github.com/open-feature/java-sdk-contrib/issues/1172)) ([ac751e8](https://github.com/open-feature/java-sdk-contrib/commit/ac751e8b7807eb39d6f74f767e18962b7bc69040))
44+
* **deps:** update opentelemetry-java monorepo to v1.47.0 ([#1206](https://github.com/open-feature/java-sdk-contrib/issues/1206)) ([34cd441](https://github.com/open-feature/java-sdk-contrib/commit/34cd4411ba768a602e399f7f23a7b1b8fbdfd77b))
45+
* rpc caching not behaving as expected (cleared too often) ([#1115](https://github.com/open-feature/java-sdk-contrib/issues/1115)) ([b4fe2f4](https://github.com/open-feature/java-sdk-contrib/commit/b4fe2f48ebb1368973d4f44c1a83d638b0e8b8b0))
46+
47+
48+
### ✨ New Features
49+
50+
* **flagd:** migrate file to own provider type ([#1173](https://github.com/open-feature/java-sdk-contrib/issues/1173)) ([1bd8f86](https://github.com/open-feature/java-sdk-contrib/commit/1bd8f861755f998f0756684e69a5cf0ce6d7226a))
51+
* implement grpc reconnect for inprocess mode ([#1150](https://github.com/open-feature/java-sdk-contrib/issues/1150)) ([d2410c7](https://github.com/open-feature/java-sdk-contrib/commit/d2410c70edcb59d3c5eedcff6071ca4963a096ac))
52+
* Update in-process resolver to support flag metadata [#1102](https://github.com/open-feature/java-sdk-contrib/issues/1102) ([#1122](https://github.com/open-feature/java-sdk-contrib/issues/1122)) ([a330bd6](https://github.com/open-feature/java-sdk-contrib/commit/a330bd66aa50b85661feae8534e7e3def9287e5d))
53+
* Use grpc intern reconnections for rpc event stream ([#1112](https://github.com/open-feature/java-sdk-contrib/issues/1112)) ([d66adc9](https://github.com/open-feature/java-sdk-contrib/commit/d66adc914111c773dfbcfb78617a633b96f7f7c0))
54+
55+
56+
### 🧹 Chore
57+
58+
* **deps:** update dependency providers/flagd/test-harness to v2 ([#1195](https://github.com/open-feature/java-sdk-contrib/issues/1195)) ([e1f2bc3](https://github.com/open-feature/java-sdk-contrib/commit/e1f2bc3dccd7734598b05baa4ec161a050ba4c5e))
59+
* **deps:** update providers/flagd/schemas digest to 37baa2c ([#1142](https://github.com/open-feature/java-sdk-contrib/issues/1142)) ([d75e620](https://github.com/open-feature/java-sdk-contrib/commit/d75e62006a105f9f1a7e1d4e4d2d2c0f412ed6c6))
60+
* **deps:** update providers/flagd/schemas digest to bb76343 ([#1180](https://github.com/open-feature/java-sdk-contrib/issues/1180)) ([142560f](https://github.com/open-feature/java-sdk-contrib/commit/142560f7a2ab77ba951321b5ea92deefe9ba3ee9))
61+
* **deps:** update providers/flagd/schemas digest to bb76343 ([#1196](https://github.com/open-feature/java-sdk-contrib/issues/1196)) ([4fdb0a9](https://github.com/open-feature/java-sdk-contrib/commit/4fdb0a9d1d992a9d3d79e9a56942b20aa1142f85))
62+
* **deps:** update providers/flagd/spec digest to 5b07065 ([#1179](https://github.com/open-feature/java-sdk-contrib/issues/1179)) ([63bb327](https://github.com/open-feature/java-sdk-contrib/commit/63bb3278002c90d1fa4ace2752e2fdce1025bc90))
63+
* **deps:** update providers/flagd/spec digest to 6c673d7 ([#1157](https://github.com/open-feature/java-sdk-contrib/issues/1157)) ([cd0ea9e](https://github.com/open-feature/java-sdk-contrib/commit/cd0ea9e8d3d303b675b5d33287d94394e3c3aa6c))
64+
* **deps:** update providers/flagd/spec digest to 8d6eeb3 ([#1194](https://github.com/open-feature/java-sdk-contrib/issues/1194)) ([d38e013](https://github.com/open-feature/java-sdk-contrib/commit/d38e013b83ac5bc0545a90a3c173a07c5788f460))
65+
* **deps:** update providers/flagd/spec digest to 8d6eeb3 ([#1197](https://github.com/open-feature/java-sdk-contrib/issues/1197)) ([da76294](https://github.com/open-feature/java-sdk-contrib/commit/da76294aec6e3f07addc7a5f60bc862e127d439a))
66+
* **deps:** update providers/flagd/spec digest to 95fe981 ([#1201](https://github.com/open-feature/java-sdk-contrib/issues/1201)) ([49b4218](https://github.com/open-feature/java-sdk-contrib/commit/49b4218af69fad8d639cab095ec94b5db72d769e))
67+
* **deps:** update providers/flagd/spec digest to be56f22 ([#1210](https://github.com/open-feature/java-sdk-contrib/issues/1210)) ([5628cbc](https://github.com/open-feature/java-sdk-contrib/commit/5628cbc28d86ed6e221e7ca068d81106bcfc36cd))
68+
369
## [0.10.5](https://github.com/open-feature/java-sdk-contrib/compare/dev.openfeature.contrib.providers.flagd-v0.10.2...dev.openfeature.contrib.providers.flagd-v0.10.5) (2025-01-03)
470

571

providers/flagd/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This provider is designed to use flagd's [evaluation protocol](https://github.co
88
<dependency>
99
<groupId>dev.openfeature.contrib.providers</groupId>
1010
<artifactId>flagd</artifactId>
11-
<version>0.10.5</version>
11+
<version>0.11.2</version>
1212
</dependency>
1313
```
1414
<!-- x-release-please-end-version -->

providers/flagd/pom.xml

+7-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111
<groupId>dev.openfeature.contrib.providers</groupId>
1212
<artifactId>flagd</artifactId>
13-
<version>0.10.5</version> <!--x-release-please-version -->
13+
<version>0.11.2</version> <!--x-release-please-version -->
1414

1515
<properties>
1616
<!-- exclusion expression for e2e tests -->
@@ -113,6 +113,12 @@
113113
<version>4.4</version>
114114
</dependency>
115115

116+
<dependency>
117+
<groupId>org.apache.commons</groupId>
118+
<artifactId>commons-lang3</artifactId>
119+
<version>3.17.0</version>
120+
</dependency>
121+
116122
<dependency>
117123
<groupId>io.opentelemetry</groupId>
118124
<artifactId>opentelemetry-api</artifactId>

providers/flagd/spec

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public static void monitorChannelState(
4848
}
4949
}
5050
if (currentState != ConnectivityState.SHUTDOWN) {
51-
log.debug("shutting down grpc channel");
51+
log.debug("continuing to monitor the grpc channel");
5252
// Re-register the state monitor to watch for the next state transition.
5353
monitorChannelState(currentState, channel, onConnectionReady, onConnectionLost);
5454
}

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java

+15-7
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,16 @@ public GrpcStreamConnector(final FlagdOptions options, Consumer<FlagdProviderEve
5151
FlagSyncServiceGrpc::newStub,
5252
FlagSyncServiceGrpc::newBlockingStub,
5353
onConnectionEvent,
54-
stub -> stub.syncFlags(SyncFlagsRequest.getDefaultInstance(), new GrpcStreamHandler(streamReceiver)));
54+
stub -> {
55+
String localSelector = selector;
56+
57+
final SyncFlagsRequest.Builder syncRequest = SyncFlagsRequest.newBuilder();
58+
if (localSelector != null) {
59+
syncRequest.setSelector(localSelector);
60+
}
61+
62+
stub.syncFlags(syncRequest.build(), new GrpcStreamHandler(streamReceiver));
63+
});
5564
}
5665

5766
/** Initialize gRPC stream connector. */
@@ -98,14 +107,9 @@ void observeEventStream(final BlockingQueue<QueuePayload> writeTo, final AtomicB
98107
Exception metadataException = null;
99108

100109
log.debug("Initializing sync stream request");
101-
final SyncFlagsRequest.Builder syncRequest = SyncFlagsRequest.newBuilder();
102110
final GetMetadataRequest.Builder metadataRequest = GetMetadataRequest.newBuilder();
103111
GetMetadataResponse metadataResponse = GetMetadataResponse.getDefaultInstance();
104112

105-
if (selector != null) {
106-
syncRequest.setSelector(selector);
107-
}
108-
109113
try (CancellableContext context = Context.current().withCancellation()) {
110114

111115
try {
@@ -116,6 +120,7 @@ void observeEventStream(final BlockingQueue<QueuePayload> writeTo, final AtomicB
116120
// instead of logging and throwing here, retain the exception and handle in the
117121
// stream logic below
118122
metadataException = e;
123+
log.debug("Metadata exception: {}", e.getMessage(), e);
119124
}
120125

121126
while (!shutdown.get()) {
@@ -129,7 +134,10 @@ void observeEventStream(final BlockingQueue<QueuePayload> writeTo, final AtomicB
129134

130135
Throwable streamException = response.getError();
131136
if (streamException != null || metadataException != null) {
132-
log.debug("Exception in GRPC connection");
137+
log.debug(
138+
"Exception in GRPC connection, streamException {}, metadataException {}",
139+
streamException,
140+
metadataException);
133141
if (!writeTo.offer(new QueuePayload(
134142
QueuePayloadType.ERROR, "Error from stream or metadata", metadataResponse))) {
135143
log.error("Failed to convey ERROR status, queue is full");

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunFileTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "dev.openfeature.contrib.providers.flagd.e2e.steps")
2929
@ConfigurationParameter(key = OBJECT_FACTORY_PROPERTY_NAME, value = "io.cucumber.picocontainer.PicoFactory")
3030
@IncludeTags("file")
31-
@ExcludeTags({"unixsocket", "targetURI", "reconnect", "customCert"})
31+
@ExcludeTags({"unixsocket", "targetURI", "reconnect", "customCert", "events"})
3232
@Testcontainers
3333
public class RunFileTest {
3434

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
@IncludeEngines("cucumber")
2525
@SelectDirectories("test-harness/gherkin")
2626
// if you want to run just one feature file, use the following line instead of @SelectDirectories
27-
// @SelectFile("test-harness/gherkin/connection.feature")
27+
// @SelectFile("test-harness/gherkin/selector.feature")
2828
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty")
2929
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "dev.openfeature.contrib.providers.flagd.e2e.steps")
3030
@ConfigurationParameter(key = OBJECT_FACTORY_PROPERTY_NAME, value = "io.cucumber.picocontainer.PicoFactory")

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/steps/ProviderSteps.java

-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public ProviderSteps(State state) {
4040

4141
@BeforeAll
4242
public static void beforeAll() throws IOException {
43-
State.resolverType = Config.Resolver.RPC;
4443
sharedTempDir = Files.createDirectories(
4544
Paths.get("tmp/" + RandomStringUtils.randomAlphanumeric(8).toLowerCase() + "/"));
4645
container = new FlagdContainer()

providers/flagd/test-harness

providers/flagd/version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.10.5
1+
0.11.2

release-please-config.json

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"providers/flagd": {
66
"package-name": "dev.openfeature.contrib.providers.flagd",
77
"release-type": "simple",
8-
"release-as": "0.10.5",
98
"bump-minor-pre-major": true,
109
"bump-patch-for-minor-pre-major": true,
1110
"versioning": "default",

0 commit comments

Comments
 (0)