From 40b0ac54d2c6743121f0048565403af19935ceac Mon Sep 17 00:00:00 2001 From: Tyler Potter Date: Mon, 5 Oct 2026 09:59:16 -0600 Subject: [PATCH 1/2] Prepare Java server SDK 6.0.0 with common 4.0.1 Use released common 4.0.1 and framework 0.1.1 test fixtures. Document the v6 API migration and strict-mode malformed-JSON behaviour. Validate Java 8, 11, 17 and 21 with 68 tests per runtime and migration probes; full relay passes 256 cases with two expected skips against published artifacts. --- README.md | 19 +++++++++++++++++++ build.gradle | 6 +++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9fd32ef..4cb8482 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,25 @@ dependencies { Refer to our [SDK documentation](https://docs.geteppo.com/sdks/server-sdks/java/) for how to install and use the SDK. +## Upgrading to 6.0.0 + +Version 6.0.0 adopts common SDK 4.0.1. The common SDK is exposed as an API +dependency, so applications that use its types must account for these breaking +changes: + +- Update imports from `cloud.eppo.ufc.dto` to `cloud.eppo.api.dto`. +- `cloud.eppo.EppoHttpClient` has been removed. Integrations that directly use it + must migrate to the v4 HTTP-client API; this is not a drop-in class rename. + +The client also exposes typed `get*AssignmentDetails()` methods and +`getBanditActionDetails()` for inspecting evaluation results. + +Starting in common 4.0.0, strict mode (graceful mode disabled) throws when a JSON +flag contains malformed JSON. Common 3.13.2 returned the supplied non-null default +for this case. Graceful mode continues to return the default. This applies to both +parsed JSON and JSON-string assignments. Common 4.0.1 fixes successful JSON-string +assignments while retaining this strict-mode behaviour. + ## Contributing Java 8 is required to locally compile the SDK. diff --git a/build.gradle b/build.gradle index 04fec14..1f78b13 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ java { } group = 'cloud.eppo' -version = '6.0.0-SNAPSHOT' +version = '6.0.0' ext.isReleaseVersion = !version.endsWith("SNAPSHOT") import org.apache.tools.ant.filters.ReplaceTokens @@ -30,7 +30,7 @@ repositories { } dependencies { - api 'cloud.eppo:sdk-common-jvm:4.0.0-SNAPSHOT' + api 'cloud.eppo:sdk-common-jvm:4.0.1' implementation 'com.github.zafarkhaja:java-semver:0.10.2' implementation 'com.fasterxml.jackson.core:jackson-databind:2.20.1' @@ -39,7 +39,7 @@ dependencies { implementation 'org.jetbrains:annotations:26.1.0' // Logback classic 1.3.x is compatible with java 8 - only needed for tests - testImplementation 'cloud.eppo:eppo-sdk-framework:0.1.0-SNAPSHOT:tests' + testImplementation 'cloud.eppo:eppo-sdk-framework:0.1.1:tests' testImplementation 'ch.qos.logback:logback-classic:1.3.16' testImplementation platform('org.junit:junit-bom:5.11.4') testImplementation 'org.junit.jupiter:junit-jupiter' From 23c484af3448d2edcebdc9694240edbd7db82456 Mon Sep 17 00:00:00 2001 From: Aaron Silverman Date: Wed, 28 Oct 2026 20:57:22 -0400 Subject: [PATCH 2/2] Adopt common 4.0.2 and framework 0.1.2 Common 4.0.2 keeps flags updating when a bandit fetch fails and returns the default value when bandit evaluation fails. Update the dependency pins and the 6.0.0 upgrade notes. Co-Authored-By: Claude Opus 5.5 --- README.md | 11 ++++++++++- build.gradle | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4cb8482..120b395 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Refer to our [SDK documentation](https://docs.geteppo.com/sdks/server-sdks/java/ ## Upgrading to 6.0.0 -Version 6.0.0 adopts common SDK 4.0.1. The common SDK is exposed as an API +Version 6.0.0 adopts common SDK 4.0.2. The common SDK is exposed as an API dependency, so applications that use its types must account for these breaking changes: @@ -34,6 +34,15 @@ for this case. Graceful mode continues to return the default. This applies to bo parsed JSON and JSON-string assignments. Common 4.0.1 fixes successful JSON-string assignments while retaining this strict-mode behaviour. +Common 4.0.2 changes how the client handles bandit failures: + +- A failed bandit fetch no longer blocks flag updates. The client applies the new + flags, keeps its loaded bandit models, and retries the bandits on the next poll. +- When bandit evaluation fails, for example because the models are not loaded yet, + `getBanditAction` returns the default value with a null action. Common 3.13.2 + returned the bandit variation. `getBanditActionDetails` reports evaluation code + `BANDIT_ERROR`. + ## Contributing Java 8 is required to locally compile the SDK. diff --git a/build.gradle b/build.gradle index 1f78b13..6649bd0 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ repositories { } dependencies { - api 'cloud.eppo:sdk-common-jvm:4.0.1' + api 'cloud.eppo:sdk-common-jvm:4.0.2' implementation 'com.github.zafarkhaja:java-semver:0.10.2' implementation 'com.fasterxml.jackson.core:jackson-databind:2.20.1' @@ -39,7 +39,7 @@ dependencies { implementation 'org.jetbrains:annotations:26.1.0' // Logback classic 1.3.x is compatible with java 8 - only needed for tests - testImplementation 'cloud.eppo:eppo-sdk-framework:0.1.1:tests' + testImplementation 'cloud.eppo:eppo-sdk-framework:0.1.2:tests' testImplementation 'ch.qos.logback:logback-classic:1.3.16' testImplementation platform('org.junit:junit-bom:5.11.4') testImplementation 'org.junit.jupiter:junit-jupiter'