Skip to content

Commit 4164be5

Browse files
author
vishalup29
committed
Issue #1486 fix: use shutdown in MultiProvider initialize error path
Signed-off-by: vishalup29 <vishalupadhyay977@gmail.com>
1 parent b26ecf8 commit 4164be5

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/main/java/dev/openfeature/sdk/multiprovider/MultiProvider.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public class MultiProvider extends EventProvider {
3535
@Getter
3636
private static final String NAME = "multiprovider";
3737

38-
public static final int INIT_THREADS_COUNT = 8;
38+
// Use CPU count as upper bound for init threads.
39+
public static final int INIT_THREADS_COUNT = Runtime.getRuntime().availableProcessors();
3940

4041
private final Map<String, FeatureProvider> providers;
4142
private final Strategy strategy;
@@ -68,7 +69,7 @@ protected static Map<String, FeatureProvider> buildProviders(List<FeatureProvide
6869
FeatureProvider prevProvider =
6970
providersMap.put(provider.getMetadata().getName(), provider);
7071
if (prevProvider != null) {
71-
log.warn("duplicated provider name: {}", provider.getMetadata().getName());
72+
log.info("duplicated provider name: {}", provider.getMetadata().getName());
7273
}
7374
}
7475
return Collections.unmodifiableMap(providersMap);
@@ -113,17 +114,12 @@ public void initialize(EvaluationContext evaluationContext) throws Exception {
113114
result.get();
114115
}
115116
} catch (Exception e) {
116-
// If initialization fails for any provider, attempt to shut down all providers
117-
// to avoid a partial/limbo state.
118-
for (FeatureProvider provider : providers.values()) {
119-
try {
120-
provider.shutdown();
121-
} catch (Exception shutdownEx) {
122-
log.error(
123-
"error shutting down provider {} after failed initialize",
124-
provider.getMetadata().getName(),
125-
shutdownEx);
126-
}
117+
// If initialization fails for any provider, attempt to shut down via the
118+
// standard shutdown path to avoid a partial/limbo state.
119+
try {
120+
shutdown();
121+
} catch (Exception shutdownEx) {
122+
log.error("error during shutdown after failed initialize", shutdownEx);
127123
}
128124
throw e;
129125
} finally {

0 commit comments

Comments
 (0)