Skip to content

Commit 356a973

Browse files
authored
fix: race condition causing default when multiple flags are used (#983)
Signed-off-by: Todd Baert <[email protected]>
1 parent 6cdea81 commit 356a973

File tree

2 files changed

+7
-24
lines changed

2 files changed

+7
-24
lines changed

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/OpenFeatureExtension.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public void beforeEach(ExtensionContext extensionContext) throws Exception {
119119
((TestProvider) api.getProvider(domain))
120120
.addConfigurationForTest(getNamespace(extensionContext), stringMapEntry.getValue());
121121
} else {
122-
api.setProvider(domain, new TestProvider(
122+
api.setProviderAndWait(domain, new TestProvider(
123123
getNamespace(extensionContext),
124124
stringMapEntry.getValue()));
125125
}
@@ -128,7 +128,7 @@ public void beforeEach(ExtensionContext extensionContext) throws Exception {
128128
((TestProvider) api.getProvider())
129129
.addConfigurationForTest(getNamespace(extensionContext), stringMapEntry.getValue());
130130
} else {
131-
api.setProvider(new TestProvider(
131+
api.setProviderAndWait(new TestProvider(
132132
getNamespace(extensionContext),
133133
stringMapEntry.getValue()));
134134
}

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/TestProvider.java

+5-22
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package dev.openfeature.contrib.tools.junitopenfeature;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import org.junit.jupiter.api.extension.ExtensionContext;
7+
38
import dev.openfeature.sdk.EvaluationContext;
49
import dev.openfeature.sdk.EventProvider;
510
import dev.openfeature.sdk.ImmutableContext;
611
import dev.openfeature.sdk.Metadata;
712
import dev.openfeature.sdk.ProviderEvaluation;
8-
import dev.openfeature.sdk.ProviderState;
913
import dev.openfeature.sdk.Value;
1014
import dev.openfeature.sdk.providers.memory.Flag;
1115
import dev.openfeature.sdk.providers.memory.InMemoryProvider;
1216
import lombok.Getter;
1317
import lombok.SneakyThrows;
1418
import lombok.extern.slf4j.Slf4j;
15-
import org.junit.jupiter.api.extension.ExtensionContext;
16-
17-
import java.util.HashMap;
18-
import java.util.Map;
1919

2020
/**
2121
* TestProvider based on InMemoryProvider but with another dimension added to the maps of flags.
@@ -102,23 +102,6 @@ public ProviderEvaluation<Value> getObjectEvaluation(String key, Value defaultVa
102102
.getObjectEvaluation(key, defaultValue, evaluationContext);
103103
}
104104

105-
@Override
106-
public ProviderState getState() {
107-
return providerMap
108-
.values()
109-
.stream()
110-
.map(InMemoryProvider::getState)
111-
.reduce(
112-
(providerState, providerState2) -> {
113-
if (providerState.ordinal() < providerState2.ordinal()) {
114-
return providerState2;
115-
}
116-
return providerState;
117-
}
118-
)
119-
.orElse(ProviderState.READY);
120-
}
121-
122105
public static void setCurrentNamespace(ExtensionContext.Namespace namespace) {
123106
CURRENT_NAMESPACE.set(namespace);
124107
}

0 commit comments

Comments
 (0)