Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: blocking setProvider #201

Merged
merged 10 commits into from
Aug 15, 2023
7 changes: 7 additions & 0 deletions specification.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,13 @@
"RFC 2119 keyword": "MUST NOT",
"children": []
},
{
"id": "Requirement 1.1.8",
"machine_id": "requirement_1_1_8",
"content": "The `API` SHOULD provide functions to set a provider and wait for the `initialize` function to return or throw.",
"RFC 2119 keyword": "SHOULD",
"children": []
},
{
"id": "Requirement 1.2.1",
"machine_id": "requirement_1_2_1",
Expand Down
18 changes: 18 additions & 0 deletions specification/sections/01-flag-evaluation.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,24 @@ See [setting a provider](#setting-a-provider) for details.

Clients may be created in critical code paths, and even per-request in server-side HTTP contexts. Therefore, in keeping with the principle that OpenFeature should never cause abnormal execution of the first party application, this function should never throw. Abnormal execution in initialization should instead occur during provider registration.

#### Requirement 1.1.8

> The `API` **SHOULD** provide functions to set a provider and wait for the `initialize` function to return or throw.

This function not only sets the provider, but ensures that the provider is ready (or in error) before returning or settling.

```java
// default client
OpenFeatureAPI.getInstance().setProviderAndWait(myprovider); // this method blocks until the provider is ready or in error
Client client = OpenFeatureAPI.getInstance().getClient();

// named client
OpenFeatureAPI.getInstance().setProviderAndWait('client-name', myprovider); // this method blocks until the provider is ready or in error
Client client = OpenFeatureAPI.getInstance().getClient('client-name');
```

thomaspoignant marked this conversation as resolved.
Show resolved Hide resolved
Though it's possible to use [events](./05-events.md) to await provider readiness, such functions can make things simpler for `application authors` and `integrators`.

### 1.2. Client Usage

#### Requirement 1.2.1
Expand Down
Loading