Skip to content

Commit f6882fa

Browse files
authored
Merge branch 'main' into feat/improve-error-handling
2 parents f231d24 + 122119b commit f6882fa

File tree

12 files changed

+35
-31
lines changed

12 files changed

+35
-31
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
cache: maven
2525

2626
- name: Cache local Maven repository
27-
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
27+
uses: actions/cache@0c907a75c2c80ebcb7f088228285e798b750cf8f # v4
2828
with:
2929
path: ~/.m2/repository
3030
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}

.github/workflows/release-please.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232

3333
- name: Cache local Maven repository
3434
if: ${{ steps.release.outputs.releases_created }}
35-
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
35+
uses: actions/cache@0c907a75c2c80ebcb7f088228285e798b750cf8f # v4
3636
with:
3737
path: ~/.m2/repository
3838
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"providers/flagd": "0.11.2",
2+
"providers/flagd": "0.11.3",
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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## [0.11.3](https://github.com/open-feature/java-sdk-contrib/compare/dev.openfeature.contrib.providers.flagd-v0.11.2...dev.openfeature.contrib.providers.flagd-v0.11.3) (2025-02-18)
4+
5+
6+
### 🐛 Bug Fixes
7+
8+
* enriched context lost on some events ([#1226](https://github.com/open-feature/java-sdk-contrib/issues/1226)) ([aefa941](https://github.com/open-feature/java-sdk-contrib/commit/aefa9410442baa5d801350e9b039ea27b9b8a41d))
9+
10+
11+
### 🧹 Chore
12+
13+
* **deps:** update dependency providers/flagd/test-harness to v2.2.0 ([#1223](https://github.com/open-feature/java-sdk-contrib/issues/1223)) ([5f75991](https://github.com/open-feature/java-sdk-contrib/commit/5f75991a59a2bb098ef5b927ecdace61e1baf0fd))
14+
* **deps:** update providers/flagd/spec digest to 54952f3 ([#1218](https://github.com/open-feature/java-sdk-contrib/issues/1218)) ([5a19a8d](https://github.com/open-feature/java-sdk-contrib/commit/5a19a8ddf881b9591b9416d4b859d8c656a63519))
15+
* **deps:** update providers/flagd/test-harness digest to ec1d75c ([#1198](https://github.com/open-feature/java-sdk-contrib/issues/1198)) ([3fe0871](https://github.com/open-feature/java-sdk-contrib/commit/3fe0871d4765228983cc6da5de0bf8b2f66854a6))
16+
* update testbed ([#1225](https://github.com/open-feature/java-sdk-contrib/issues/1225)) ([020c9a1](https://github.com/open-feature/java-sdk-contrib/commit/020c9a14fedddd3fec450a87db45dead0c33f4c2))
17+
318
## [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)
419

520

providers/flagd/README.md

Lines changed: 1 addition & 1 deletion
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.11.2</version>
11+
<version>0.11.3</version>
1212
</dependency>
1313
```
1414
<!-- x-release-please-end-version -->

providers/flagd/pom.xml

Lines changed: 2 additions & 2 deletions
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.11.2</version> <!--x-release-please-version -->
13+
<version>0.11.3</version> <!--x-release-please-version -->
1414

1515
<properties>
1616
<!-- exclusion expression for e2e tests -->
@@ -158,7 +158,7 @@
158158
<dependency>
159159
<groupId>io.rest-assured</groupId>
160160
<artifactId>rest-assured</artifactId>
161-
<version>5.5.0</version>
161+
<version>5.5.1</version>
162162
<scope>test</scope>
163163
</dependency>
164164
<!-- uncomment for logoutput during test runs -->

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/FlagdProvider.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import dev.openfeature.sdk.EventProvider;
1111
import dev.openfeature.sdk.Hook;
1212
import dev.openfeature.sdk.ImmutableContext;
13-
import dev.openfeature.sdk.ImmutableStructure;
1413
import dev.openfeature.sdk.Metadata;
1514
import dev.openfeature.sdk.ProviderEvaluation;
1615
import dev.openfeature.sdk.ProviderEvent;
@@ -184,19 +183,6 @@ public ProviderEvaluation<Value> getObjectEvaluation(String key, Value defaultVa
184183
return flagResolver.objectEvaluation(key, defaultValue, ctx);
185184
}
186185

187-
/**
188-
* An unmodifiable view of a Structure representing the latest result of the
189-
* SyncMetadata.
190-
* Set on initial connection and updated with every reconnection.
191-
* see:
192-
* https://buf.build/open-feature/flagd/docs/main:flagd.sync.v1#flagd.sync.v1.FlagSyncService.GetMetadata
193-
*
194-
* @return Object map representing sync metadata
195-
*/
196-
protected Structure getSyncMetadata() {
197-
return new ImmutableStructure(eventsLock.syncMetadata.asMap());
198-
}
199-
200186
/**
201187
* The updated context mixed into all evaluations based on the sync-metadata.
202188
*
@@ -211,10 +197,6 @@ private void onProviderEvent(FlagdProviderEvent flagdProviderEvent) {
211197

212198
synchronized (eventsLock) {
213199
log.info("FlagdProviderEvent: {}", flagdProviderEvent.getEvent());
214-
eventsLock.syncMetadata = flagdProviderEvent.getSyncMetadata();
215-
if (flagdProviderEvent.getSyncMetadata() != null) {
216-
eventsLock.enrichedContext = contextEnricher.apply(flagdProviderEvent.getSyncMetadata());
217-
}
218200

219201
/*
220202
* We only use Error and Ready as previous states.
@@ -233,6 +215,13 @@ private void onProviderEvent(FlagdProviderEvent flagdProviderEvent) {
233215
}
234216
// intentional fall through, a not-ready change will trigger a ready.
235217
case PROVIDER_READY:
218+
/*
219+
* Sync metadata is used to enrich the context, and is immutable in flagd,
220+
* so we only need it to be fetched once at READY.
221+
*/
222+
if (flagdProviderEvent.getSyncMetadata() != null) {
223+
eventsLock.enrichedContext = contextEnricher.apply(flagdProviderEvent.getSyncMetadata());
224+
}
236225
onReady();
237226
eventsLock.previousEvent = ProviderEvent.PROVIDER_READY;
238227
break;
@@ -304,7 +293,6 @@ private void onError() {
304293
*/
305294
static class EventsLock {
306295
volatile ProviderEvent previousEvent = null;
307-
volatile Structure syncMetadata = new ImmutableStructure();
308296
volatile boolean initialized = false;
309297
volatile EvaluationContext enrichedContext = new ImmutableContext();
310298
}

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/FlagdProviderTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,6 @@ void updatesSyncMetadataWithCallback() throws Exception {
669669
provider.initialize(ctx);
670670

671671
// the onConnectionEvent should have updated the sync metadata and the
672-
assertEquals(val, provider.getSyncMetadata().getValue(key).asString());
673672
assertEquals(val, provider.getEnrichedContext().getValue(key).asString());
674673

675674
// call the hook manually and make sure the enriched context is returned

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

Lines changed: 1 addition & 1 deletion
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", "events"})
31+
@ExcludeTags({"unixsocket", "targetURI", "reconnect", "customCert", "events", "contextEnrichment"})
3232
@Testcontainers
3333
public class RunFileTest {
3434

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
@Slf4j
1818
public class EventSteps extends AbstractSteps {
1919

20+
private static final int EVENT_TIMEOUT_MS = 12_000;
21+
2022
public EventSteps(State state) {
2123
super(state);
2224
state.events = new LinkedList<>();
@@ -47,12 +49,12 @@ public void a_stale_event_handler(String eventType) {
4749

4850
@When("a {} event was fired")
4951
public void eventWasFired(String eventType) throws InterruptedException {
50-
eventHandlerShouldBeExecutedWithin(eventType, 8000);
52+
eventHandlerShouldBeExecutedWithin(eventType, EVENT_TIMEOUT_MS);
5153
}
5254

5355
@Then("the {} event handler should have been executed")
5456
public void eventHandlerShouldBeExecuted(String eventType) {
55-
eventHandlerShouldBeExecutedWithin(eventType, 10000);
57+
eventHandlerShouldBeExecutedWithin(eventType, EVENT_TIMEOUT_MS);
5658
}
5759

5860
@Then("the {} event handler should have been executed within {int}ms")

0 commit comments

Comments
 (0)