open-feature / open-feature/java-sdk
on setProvider call, shutting down the previous provider should happen before creating the new one
- Vorherrschende Sprache
- Java
- Sterne
- 128
- Forks
- 61
- Ø Merge
- 5 Std. 57 Min.
- Gemergte PRs (30 T.)
- 26
Beschreibung
Hi,
I noticed that if I use `setProvider` to set a provider, then later I want to replace it with another provider (in my case, I do this to supports changing the api key I use to connect to the provider without stopping my application, so I recreate the provider with the new key) the following happens in parallel:
- the shutting down of the old provider
- the initialization of the new one
For Unleash, this can be a problem as shown in those logs:
```
server-1 | {"timestamp":"2026-04-28T10:55:47.302964637Z","logger":"io.getunleash.repository.FeatureBackupHandlerFile","level":"INFO","thread":"openfeature-provider-thread-1","message":"Unleash will try to load feature toggle states from temporary backup"}
server-1 | {"timestamp":"2026-04-28T10:55:47.304799269Z","logger":"io.getunleash.repository.PollingFeatureFetcher","level":"INFO","thread":"openfeature-provider-thread-1","message":"Starting polling client"}
server-1 | {"timestamp":"2026-04-28T10:55:47.485565437Z","logger":"io.getunleash.DefaultUnleash","level":"ERROR","thread":"openfeature-provider-thread-1","message":"You already have 1 clients for AppName [my-app] with instanceId: [xxxxxxxx] running. Please double check your code where you are instantiating the Unleash SDK"}
server-1 | {"timestamp":"2026-04-28T10:55:47.485655434Z","logger":"dev.openfeature.contrib.providers.unleash.UnleashProvider","level":"INFO","thread":"openfeature-provider-thread-1","message":"finished initializing provider"}
server-1 | {"timestamp":"2026-04-28T10:55:47.485682289Z","logger":"dev.openfeature.sdk.FeatureProviderStateManager","level":"INFO","thread":"openfeature-provider-thread-1","message":"Provider Unleash transitioned from state NOT_READY to state READY"}
server-1 | {"timestamp":"2026-04-28T10:55:47.486912037Z","logger":"dev.openfeature.contrib.providers.unleash.UnleashProvider","level":"INFO","thread":"openfeature-provider-thread-2","message":"shutdown"}
server-1 |
```
As we can see the shutdown of the original client happens after the initialization of the new one and we get an ERROR message from the Unleash library.
Beitragsleitfaden
Rechercherichtung
Beginne beim Einstiegspunkt setProvider und verfolge, wie der vorhandene Provider heruntergefahren und der Ersatz initialisiert wird. Reproduziere den im Issue gezeigten Provider-Ersatz und überprüfe anschließend, dass das Herunterfahren abgeschlossen ist, bevor die Initialisierung beginnt, und dass der Unleash duplicate-client error nicht mehr auftritt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- api
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 50/100