From 873e4f88a6dc2010f7560e8999a5db607e70cad1 Mon Sep 17 00:00:00 2001 From: Nick Zimmermann <Nick.Zimmermann@swisscom.com> Date: Wed, 12 Feb 2025 12:00:16 +0100 Subject: [PATCH 01/12] feat: improve error handling Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .../bean/GoFeatureFlagResponse.java | 1 + .../controller/GoFeatureFlagController.java | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/bean/GoFeatureFlagResponse.java b/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/bean/GoFeatureFlagResponse.java index 79e2c99b5..4d8274725 100644 --- a/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/bean/GoFeatureFlagResponse.java +++ b/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/bean/GoFeatureFlagResponse.java @@ -12,6 +12,7 @@ public class GoFeatureFlagResponse { private String version; private String reason; private String errorCode; + private String message; private Object value; private Boolean cacheable; private Map<String, Object> metadata; diff --git a/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/controller/GoFeatureFlagController.java b/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/controller/GoFeatureFlagController.java index c39bfee4b..e2ca9f00c 100644 --- a/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/controller/GoFeatureFlagController.java +++ b/providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/controller/GoFeatureFlagController.java @@ -27,6 +27,7 @@ import dev.openfeature.sdk.Reason; import dev.openfeature.sdk.exceptions.FlagNotFoundError; import dev.openfeature.sdk.exceptions.GeneralError; +import dev.openfeature.sdk.exceptions.InvalidContextError; import dev.openfeature.sdk.exceptions.OpenFeatureError; import dev.openfeature.sdk.exceptions.TypeMismatchError; import java.io.IOException; @@ -156,17 +157,23 @@ public <T> EvaluationResponse<T> evaluateFlag( } try (Response response = this.httpClient.newCall(reqBuilder.build()).execute()) { - if (response.code() == HttpURLConnection.HTTP_UNAUTHORIZED) { - throw new GeneralError("invalid token used to contact GO Feature Flag relay proxy instance"); - } - if (response.code() >= HttpURLConnection.HTTP_BAD_REQUEST) { - throw new GeneralError("impossible to contact GO Feature Flag relay proxy instance"); + if (response.code() == HttpURLConnection.HTTP_UNAUTHORIZED + || response.code() == HttpURLConnection.HTTP_FORBIDDEN) { + throw new GeneralError("authentication/authorization error"); } ResponseBody responseBody = response.body(); String body = responseBody != null ? responseBody.string() : ""; GoFeatureFlagResponse goffResp = responseMapper.readValue(body, GoFeatureFlagResponse.class); + if (response.code() == HttpURLConnection.HTTP_BAD_REQUEST) { + throw new InvalidContextError("Invalid context " + goffResp.getMessage()); + } + + if (response.code() == HttpURLConnection.HTTP_INTERNAL_ERROR) { + throw new GeneralError("Unknown error while retrieving flag " + goffResp.getMessage()); + } + if (Reason.DISABLED.name().equalsIgnoreCase(goffResp.getReason())) { // we don't set a variant since we are using the default value, and we are not able to // know From 1ba540ebbb5990eb767a932784c23eb2796e4b97 Mon Sep 17 00:00:00 2001 From: Todd Baert <todd.baert@dynatrace.com> Date: Wed, 12 Feb 2025 09:09:42 -0500 Subject: [PATCH 02/12] chore: remove release as release-please-config.json Signed-off-by: Todd Baert <todd.baert@dynatrace.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- release-please-config.json | 1 - 1 file changed, 1 deletion(-) diff --git a/release-please-config.json b/release-please-config.json index 3e8df0fac..b8a017625 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -5,7 +5,6 @@ "providers/flagd": { "package-name": "dev.openfeature.contrib.providers.flagd", "release-type": "simple", - "release-as": "0.10.5", "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "versioning": "default", From c9852a0c8e5eef59680f96dd679bb9858a2ba1c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 09:11:30 -0500 Subject: [PATCH 03/12] chore(main): release dev.openfeature.contrib.providers.flagd 0.11.0 (#1215) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .release-please-manifest.json | 2 +- providers/flagd/CHANGELOG.md | 47 +++++++++++++++++++++++++++++++++++ providers/flagd/README.md | 2 +- providers/flagd/pom.xml | 2 +- providers/flagd/version.txt | 2 +- 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 917fe170d..94f4a1c8e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "providers/flagd": "0.10.5", + "providers/flagd": "0.11.0", "hooks/open-telemetry": "3.2.1", "providers/go-feature-flag": "0.4.2", "providers/flagsmith": "0.0.9", diff --git a/providers/flagd/CHANGELOG.md b/providers/flagd/CHANGELOG.md index d4cad30fa..6332e70e4 100644 --- a/providers/flagd/CHANGELOG.md +++ b/providers/flagd/CHANGELOG.md @@ -1,5 +1,52 @@ # Changelog +## [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) + + +### โ BREAKING CHANGES + +* implement grpc reconnect for inprocess mode ([#1150](https://github.com/open-feature/java-sdk-contrib/issues/1150)) +* Use grpc intern reconnections for rpc event stream ([#1112](https://github.com/open-feature/java-sdk-contrib/issues/1112)) + +### ๐ Bug Fixes + +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* 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)) + + +### โจ New Features + +* **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)) +* 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)) +* 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)) +* 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)) + + +### ๐งน Chore + +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) +* **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)) + ## [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) diff --git a/providers/flagd/README.md b/providers/flagd/README.md index d57aac682..67162b8d0 100644 --- a/providers/flagd/README.md +++ b/providers/flagd/README.md @@ -8,7 +8,7 @@ This provider is designed to use flagd's [evaluation protocol](https://github.co <dependency> <groupId>dev.openfeature.contrib.providers</groupId> <artifactId>flagd</artifactId> - <version>0.10.5</version> + <version>0.11.0</version> </dependency> ``` <!-- x-release-please-end-version --> diff --git a/providers/flagd/pom.xml b/providers/flagd/pom.xml index 6a247b9d4..cfb1bccc1 100644 --- a/providers/flagd/pom.xml +++ b/providers/flagd/pom.xml @@ -10,7 +10,7 @@ </parent> <groupId>dev.openfeature.contrib.providers</groupId> <artifactId>flagd</artifactId> - <version>0.10.5</version> <!--x-release-please-version --> + <version>0.11.0</version> <!--x-release-please-version --> <properties> <!-- exclusion expression for e2e tests --> diff --git a/providers/flagd/version.txt b/providers/flagd/version.txt index 9028ec636..d9df1bbc0 100644 --- a/providers/flagd/version.txt +++ b/providers/flagd/version.txt @@ -1 +1 @@ -0.10.5 +0.11.0 From 63b82dd55d76b636b58b534830d448fb0464c41e Mon Sep 17 00:00:00 2001 From: Todd Baert <todd.baert@dynatrace.com> Date: Wed, 12 Feb 2025 13:15:01 -0500 Subject: [PATCH 04/12] fix: missing common lang dep (#1216) Signed-off-by: Todd Baert <todd.baert@dynatrace.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- providers/flagd/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/providers/flagd/pom.xml b/providers/flagd/pom.xml index cfb1bccc1..8122eda94 100644 --- a/providers/flagd/pom.xml +++ b/providers/flagd/pom.xml @@ -113,6 +113,12 @@ <version>4.4</version> </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.17.0</version> + </dependency> + <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> From 0451ee6015e2f500f6b0ce54713ba42bfb516a1c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:22:22 -0500 Subject: [PATCH 05/12] chore(main): release dev.openfeature.contrib.providers.flagd 0.11.1 (#1217) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .release-please-manifest.json | 2 +- providers/flagd/CHANGELOG.md | 7 +++++++ providers/flagd/README.md | 2 +- providers/flagd/pom.xml | 2 +- providers/flagd/version.txt | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 94f4a1c8e..12bd71048 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "providers/flagd": "0.11.0", + "providers/flagd": "0.11.1", "hooks/open-telemetry": "3.2.1", "providers/go-feature-flag": "0.4.2", "providers/flagsmith": "0.0.9", diff --git a/providers/flagd/CHANGELOG.md b/providers/flagd/CHANGELOG.md index 6332e70e4..5e1b38d37 100644 --- a/providers/flagd/CHANGELOG.md +++ b/providers/flagd/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [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) + + +### ๐ Bug Fixes + +* 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)) + ## [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) diff --git a/providers/flagd/README.md b/providers/flagd/README.md index 67162b8d0..34cf2499a 100644 --- a/providers/flagd/README.md +++ b/providers/flagd/README.md @@ -8,7 +8,7 @@ This provider is designed to use flagd's [evaluation protocol](https://github.co <dependency> <groupId>dev.openfeature.contrib.providers</groupId> <artifactId>flagd</artifactId> - <version>0.11.0</version> + <version>0.11.1</version> </dependency> ``` <!-- x-release-please-end-version --> diff --git a/providers/flagd/pom.xml b/providers/flagd/pom.xml index 8122eda94..8c0475ee9 100644 --- a/providers/flagd/pom.xml +++ b/providers/flagd/pom.xml @@ -10,7 +10,7 @@ </parent> <groupId>dev.openfeature.contrib.providers</groupId> <artifactId>flagd</artifactId> - <version>0.11.0</version> <!--x-release-please-version --> + <version>0.11.1</version> <!--x-release-please-version --> <properties> <!-- exclusion expression for e2e tests --> diff --git a/providers/flagd/version.txt b/providers/flagd/version.txt index d9df1bbc0..af88ba824 100644 --- a/providers/flagd/version.txt +++ b/providers/flagd/version.txt @@ -1 +1 @@ -0.11.0 +0.11.1 From 63b8d328c00ae91cde415a2d5ab7ac32d188ca26 Mon Sep 17 00:00:00 2001 From: chrfwow <christian.lutnik@dynatrace.com> Date: Thu, 13 Feb 2025 16:01:27 +0100 Subject: [PATCH 06/12] chore(flagd): Improve grpc logging (#1219) Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .../providers/flagd/resolver/common/ChannelMonitor.java | 2 +- .../process/storage/connector/grpc/GrpcStreamConnector.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/common/ChannelMonitor.java b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/common/ChannelMonitor.java index 7e27da34b..09edad8d5 100644 --- a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/common/ChannelMonitor.java +++ b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/common/ChannelMonitor.java @@ -48,7 +48,7 @@ public static void monitorChannelState( } } if (currentState != ConnectivityState.SHUTDOWN) { - log.debug("shutting down grpc channel"); + log.debug("continuing to monitor the grpc channel"); // Re-register the state monitor to watch for the next state transition. monitorChannelState(currentState, channel, onConnectionReady, onConnectionLost); } diff --git a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java index e76ebfb24..2b359d236 100644 --- a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java +++ b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java @@ -116,6 +116,7 @@ void observeEventStream(final BlockingQueue<QueuePayload> writeTo, final AtomicB // instead of logging and throwing here, retain the exception and handle in the // stream logic below metadataException = e; + log.debug("Metadata exception: {}", e.getMessage(), e); } while (!shutdown.get()) { @@ -129,7 +130,10 @@ void observeEventStream(final BlockingQueue<QueuePayload> writeTo, final AtomicB Throwable streamException = response.getError(); if (streamException != null || metadataException != null) { - log.debug("Exception in GRPC connection"); + log.debug( + "Exception in GRPC connection, streamException {}, metadataException {}", + streamException, + metadataException); if (!writeTo.offer(new QueuePayload( QueuePayloadType.ERROR, "Error from stream or metadata", metadataResponse))) { log.error("Failed to convey ERROR status, queue is full"); From 71c5e8b826b57a75ba5e3f126255a4409a246857 Mon Sep 17 00:00:00 2001 From: Simon Schrottner <simon.schrottner@dynatrace.com> Date: Thu, 13 Feb 2025 16:39:03 +0100 Subject: [PATCH 07/12] fix: selector not being sent in sync call (#1220) Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .../connector/grpc/GrpcStreamConnector.java | 16 ++++++++++------ .../contrib/providers/flagd/e2e/RunFileTest.java | 2 +- .../providers/flagd/e2e/RunInProcessTest.java | 2 +- .../providers/flagd/e2e/steps/ProviderSteps.java | 1 - providers/flagd/test-harness | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java index 2b359d236..541c2fd15 100644 --- a/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java +++ b/providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/grpc/GrpcStreamConnector.java @@ -51,7 +51,16 @@ public GrpcStreamConnector(final FlagdOptions options, Consumer<FlagdProviderEve FlagSyncServiceGrpc::newStub, FlagSyncServiceGrpc::newBlockingStub, onConnectionEvent, - stub -> stub.syncFlags(SyncFlagsRequest.getDefaultInstance(), new GrpcStreamHandler(streamReceiver))); + stub -> { + String localSelector = selector; + + final SyncFlagsRequest.Builder syncRequest = SyncFlagsRequest.newBuilder(); + if (localSelector != null) { + syncRequest.setSelector(localSelector); + } + + stub.syncFlags(syncRequest.build(), new GrpcStreamHandler(streamReceiver)); + }); } /** Initialize gRPC stream connector. */ @@ -98,14 +107,9 @@ void observeEventStream(final BlockingQueue<QueuePayload> writeTo, final AtomicB Exception metadataException = null; log.debug("Initializing sync stream request"); - final SyncFlagsRequest.Builder syncRequest = SyncFlagsRequest.newBuilder(); final GetMetadataRequest.Builder metadataRequest = GetMetadataRequest.newBuilder(); GetMetadataResponse metadataResponse = GetMetadataResponse.getDefaultInstance(); - if (selector != null) { - syncRequest.setSelector(selector); - } - try (CancellableContext context = Context.current().withCancellation()) { try { diff --git a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunFileTest.java b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunFileTest.java index 7d499390c..099e2f4c9 100644 --- a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunFileTest.java +++ b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunFileTest.java @@ -28,7 +28,7 @@ @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "dev.openfeature.contrib.providers.flagd.e2e.steps") @ConfigurationParameter(key = OBJECT_FACTORY_PROPERTY_NAME, value = "io.cucumber.picocontainer.PicoFactory") @IncludeTags("file") -@ExcludeTags({"unixsocket", "targetURI", "reconnect", "customCert"}) +@ExcludeTags({"unixsocket", "targetURI", "reconnect", "customCert", "events"}) @Testcontainers public class RunFileTest { diff --git a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java index 0c0b32420..3a1c33f03 100644 --- a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java +++ b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java @@ -24,7 +24,7 @@ @IncludeEngines("cucumber") @SelectDirectories("test-harness/gherkin") // if you want to run just one feature file, use the following line instead of @SelectDirectories -// @SelectFile("test-harness/gherkin/connection.feature") +// @SelectFile("test-harness/gherkin/selector.feature") @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty") @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "dev.openfeature.contrib.providers.flagd.e2e.steps") @ConfigurationParameter(key = OBJECT_FACTORY_PROPERTY_NAME, value = "io.cucumber.picocontainer.PicoFactory") diff --git a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/steps/ProviderSteps.java b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/steps/ProviderSteps.java index ce0fc4234..77f3ddabd 100644 --- a/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/steps/ProviderSteps.java +++ b/providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/steps/ProviderSteps.java @@ -40,7 +40,6 @@ public ProviderSteps(State state) { @BeforeAll public static void beforeAll() throws IOException { - State.resolverType = Config.Resolver.RPC; sharedTempDir = Files.createDirectories( Paths.get("tmp/" + RandomStringUtils.randomAlphanumeric(8).toLowerCase() + "/")); container = new FlagdContainer() diff --git a/providers/flagd/test-harness b/providers/flagd/test-harness index ec1d75c3b..f5afee5aa 160000 --- a/providers/flagd/test-harness +++ b/providers/flagd/test-harness @@ -1 +1 @@ -Subproject commit ec1d75c3b93c1cc54828e517ad744a5150d0598a +Subproject commit f5afee5aa8e94bb9fc0becbb5928a5b4bd44729a From 460d4f41952341a583fe78a6faffa7303aa58798 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 10:41:31 -0500 Subject: [PATCH 08/12] chore(main): release dev.openfeature.contrib.providers.flagd 0.11.2 (#1221) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .release-please-manifest.json | 2 +- providers/flagd/CHANGELOG.md | 12 ++++++++++++ providers/flagd/README.md | 2 +- providers/flagd/pom.xml | 2 +- providers/flagd/version.txt | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 12bd71048..5b0bce36b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "providers/flagd": "0.11.1", + "providers/flagd": "0.11.2", "hooks/open-telemetry": "3.2.1", "providers/go-feature-flag": "0.4.2", "providers/flagsmith": "0.0.9", diff --git a/providers/flagd/CHANGELOG.md b/providers/flagd/CHANGELOG.md index 5e1b38d37..646b05e52 100644 --- a/providers/flagd/CHANGELOG.md +++ b/providers/flagd/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [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) + + +### ๐ Bug Fixes + +* 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)) + + +### ๐งน Chore + +* **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)) + ## [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) diff --git a/providers/flagd/README.md b/providers/flagd/README.md index 34cf2499a..8ef9b7e50 100644 --- a/providers/flagd/README.md +++ b/providers/flagd/README.md @@ -8,7 +8,7 @@ This provider is designed to use flagd's [evaluation protocol](https://github.co <dependency> <groupId>dev.openfeature.contrib.providers</groupId> <artifactId>flagd</artifactId> - <version>0.11.1</version> + <version>0.11.2</version> </dependency> ``` <!-- x-release-please-end-version --> diff --git a/providers/flagd/pom.xml b/providers/flagd/pom.xml index 8c0475ee9..eff4fff97 100644 --- a/providers/flagd/pom.xml +++ b/providers/flagd/pom.xml @@ -10,7 +10,7 @@ </parent> <groupId>dev.openfeature.contrib.providers</groupId> <artifactId>flagd</artifactId> - <version>0.11.1</version> <!--x-release-please-version --> + <version>0.11.2</version> <!--x-release-please-version --> <properties> <!-- exclusion expression for e2e tests --> diff --git a/providers/flagd/version.txt b/providers/flagd/version.txt index af88ba824..bc859cbd6 100644 --- a/providers/flagd/version.txt +++ b/providers/flagd/version.txt @@ -1 +1 @@ -0.11.1 +0.11.2 From b938ffe2f41497605393e8e0a8c4db3d4f112ec7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 19:39:43 +0000 Subject: [PATCH 09/12] chore(deps): update providers/flagd/spec digest to 54952f3 (#1218) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- providers/flagd/spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/providers/flagd/spec b/providers/flagd/spec index be56f22af..54952f3b5 160000 --- a/providers/flagd/spec +++ b/providers/flagd/spec @@ -1 +1 @@ -Subproject commit be56f22af99191eb36039db7b2fa18f46434a383 +Subproject commit 54952f3b545a09ce966a4dbb86c9490a1ce3333b From c591f0ca4e7a187535846e4d2142657780e5d433 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 00:13:53 +0000 Subject: [PATCH 10/12] chore(deps): update providers/flagd/test-harness digest to ec1d75c (#1198) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- providers/flagd/test-harness | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/providers/flagd/test-harness b/providers/flagd/test-harness index f5afee5aa..ec1d75c3b 160000 --- a/providers/flagd/test-harness +++ b/providers/flagd/test-harness @@ -1 +1 @@ -Subproject commit f5afee5aa8e94bb9fc0becbb5928a5b4bd44729a +Subproject commit ec1d75c3b93c1cc54828e517ad744a5150d0598a From 49149455342136943094551e54cad936e648295e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 03:07:46 +0000 Subject: [PATCH 11/12] chore(deps): update dependency providers/flagd/test-harness to v2.2.0 (#1223) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .gitmodules | 2 +- providers/flagd/test-harness | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index c2774bbc1..a8bdc72b1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,7 +4,7 @@ [submodule "providers/flagd/test-harness"] path = providers/flagd/test-harness url = https://github.com/open-feature/test-harness.git - branch = v2.1.0 + branch = v2.2.0 [submodule "providers/flagd/spec"] path = providers/flagd/spec url = https://github.com/open-feature/spec.git diff --git a/providers/flagd/test-harness b/providers/flagd/test-harness index ec1d75c3b..f5afee5aa 160000 --- a/providers/flagd/test-harness +++ b/providers/flagd/test-harness @@ -1 +1 @@ -Subproject commit ec1d75c3b93c1cc54828e517ad744a5150d0598a +Subproject commit f5afee5aa8e94bb9fc0becbb5928a5b4bd44729a From 503fbbc2ec12f5cb47c2b2a790c32252ed3261dc Mon Sep 17 00:00:00 2001 From: Nick Zimmermann <Nick.Zimmermann@swisscom.com> Date: Mon, 17 Feb 2025 11:33:00 +0100 Subject: [PATCH 12/12] fix tests Signed-off-by: Nick Zimmermann <Nick.Zimmermann@swisscom.com> --- .../providers/gofeatureflag/GoFeatureFlagProviderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/providers/go-feature-flag/src/test/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProviderTest.java b/providers/go-feature-flag/src/test/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProviderTest.java index 38a81c60b..7c34fd927 100644 --- a/providers/go-feature-flag/src/test/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProviderTest.java +++ b/providers/go-feature-flag/src/test/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProviderTest.java @@ -238,7 +238,7 @@ void should_throw_an_error_if_endpoint_not_available() { .value(false) .reason(Reason.ERROR.name()) .errorCode(ErrorCode.GENERAL) - .errorMessage("impossible to contact GO Feature Flag relay proxy instance") + .errorMessage("unknown error while retrieving flag fail_500") .build(); assertEquals(want, got); } @@ -259,7 +259,7 @@ void should_throw_an_error_if_invalid_api_key() { .value(false) .reason(Reason.ERROR.name()) .errorCode(ErrorCode.GENERAL) - .errorMessage("invalid token used to contact GO Feature Flag relay proxy instance") + .errorMessage("authentication/authorization error") .build(); assertEquals(want, got); }