Skip to content

[FEATURE] Make provider interface "stateless", SDK maintains provider state #295

Open
@toddbaert

Description

@toddbaert

Stateless providers

Providers no longer maintain their own state: the state for each provider is maintained in the SDK automatically, and updated according to the success/failures of lifecycle methods (init/shutdown) or events emitted from providers spontaneously.

### Tasks
- [x] [Requirement 1.7.1](https://openfeature.dev/specification/sections/flag-evaluation#requirement-171): The client MUST define a provider status accessor which indicates the readiness of the associated provider, with possible values NOT_READY, READY, STALE, ERROR, or FATAL.
- [x] [Requirement 1.7.3](https://openfeature.dev/specification/sections/flag-evaluation#requirement-173): The client's provider status accessor MUST indicate READY if the initialize function of the associated provider terminates normally.
- [x] [Requirement 1.7.4](https://openfeature.dev/specification/sections/flag-evaluation#requirement-174): The client's provider status accessor MUST indicate ERROR if the initialize function of the associated provider terminates abnormally.
- [x] [Requirement 1.7.5](https://openfeature.dev/specification/sections/flag-evaluation#requirement-175): The client's provider status accessor MUST indicate FATAL if the initialize function of the associated provider terminates abnormally and indicates error code PROVIDER_FATAL.
- [x] [Requirement 1.7.6](https://openfeature.dev/specification/sections/flag-evaluation#requirement-176): The client MUST default, run error hooks, and indicate an error if flag resolution is attempted while the provider is in NOT_READY.
- [x] [Requirement 1.7.7](https://openfeature.dev/specification/sections/flag-evaluation#requirement-177): The client MUST default, run error hooks, and indicate an error if flag resolution is attempted while the provider is in FATAL.
- [x] [Requirement 1.7.8](https://openfeature.dev/specification/sections/flag-evaluation#requirement-178): Implementations SHOULD propagate the error code returned from any provider lifecycle methods.
- [x] [Requirement 5.1.5](https://openfeature.dev/specification/sections/events#requirement-515): PROVIDER_ERROR events SHOULD populate the provider event details's error code field.
- [x] [Requirement 5.3.5](https://openfeature.dev/specification/sections/events#requirement-535): If the provider emits an event, the value of the client's provider status MUST be updated accordingly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    contribfestA good issue for Contribfest KubeCon EU '24enhancementNew feature or requestv0.8.0

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions