From 3840d911c37e24248801f151dbfae26f85f0196a Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 15 Nov 2023 13:07:26 -0500 Subject: [PATCH 1/6] feat: NOT_READY after provider shutdown Signed-off-by: Todd Baert --- specification.json | 7 +++++++ specification/sections/02-providers.md | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/specification.json b/specification.json index e2fa0fd2..555f0c38 100644 --- a/specification.json +++ b/specification.json @@ -443,6 +443,13 @@ "RFC 2119 keyword": "MAY", "children": [] }, + { + "id": "Requirement 2.5.2", + "machine_id": "requirement_2_5_2", + "content": "After a provider's shutdown function has terminated successfully, the provider's state should revert to it's uninitialized state.", + "RFC 2119 keyword": null, + "children": [] + }, { "id": "Requirement 2.6.1", "machine_id": "requirement_2_6_1", diff --git a/specification/sections/02-providers.md b/specification/sections/02-providers.md index f0497bff..24f8aa51 100644 --- a/specification/sections/02-providers.md +++ b/specification/sections/02-providers.md @@ -203,12 +203,15 @@ title: Provider State stateDiagram-v2 direction LR [*] --> NOT_READY - NOT_READY --> READY + NOT_READY --> READY:initialize READY --> ERROR ERROR --> READY READY --> STALE STALE --> READY STALE --> ERROR + READY --> NOT_READY:shutdown + STALE --> NOT_READY:shutdown + ERROR --> NOT_READY:shutdown ``` see [provider status](../types.md#provider-status) @@ -250,6 +253,15 @@ class MyProvider implements Provider, AutoDisposable { } ``` +#### Requirement 2.5.2 + +> After a provider's shutdown function has terminated successfully, the provider's state should revert to it's uninitialized state. + +If a provider requires initialization, once it's shut down, it should transition to it's initial `NOT_READY` state, so it can be reinitialized. +Providers not requiring initialization are assumed to be ready at all times. + +see: [initialization](#24-initialization) + ### 2.6. Provider context reconciliation [![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental) From f22496950d9cdfae17f673744270bc2eb4ae7271 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 15 Nov 2023 13:11:50 -0500 Subject: [PATCH 2/6] fixup: RFC keyword Signed-off-by: Todd Baert --- specification.json | 4 ++-- specification/sections/02-providers.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/specification.json b/specification.json index 555f0c38..966bfe62 100644 --- a/specification.json +++ b/specification.json @@ -446,8 +446,8 @@ { "id": "Requirement 2.5.2", "machine_id": "requirement_2_5_2", - "content": "After a provider's shutdown function has terminated successfully, the provider's state should revert to it's uninitialized state.", - "RFC 2119 keyword": null, + "content": "After a provider's shutdown function has terminated successfully, the provider's state MUST revert to it's uninitialized state.", + "RFC 2119 keyword": "MUST", "children": [] }, { diff --git a/specification/sections/02-providers.md b/specification/sections/02-providers.md index 24f8aa51..6813e449 100644 --- a/specification/sections/02-providers.md +++ b/specification/sections/02-providers.md @@ -255,7 +255,7 @@ class MyProvider implements Provider, AutoDisposable { #### Requirement 2.5.2 -> After a provider's shutdown function has terminated successfully, the provider's state should revert to it's uninitialized state. +> After a provider's shutdown function has terminated successfully, the provider's state **MUST** revert to it's uninitialized state. If a provider requires initialization, once it's shut down, it should transition to it's initial `NOT_READY` state, so it can be reinitialized. Providers not requiring initialization are assumed to be ready at all times. From c209ecdc8e2d4f8bd693bc7705a686030b230258 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 15 Nov 2023 13:14:23 -0500 Subject: [PATCH 3/6] fixup: correct grammar Signed-off-by: Todd Baert --- specification.json | 2 +- specification/sections/02-providers.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/specification.json b/specification.json index 966bfe62..7025d13d 100644 --- a/specification.json +++ b/specification.json @@ -446,7 +446,7 @@ { "id": "Requirement 2.5.2", "machine_id": "requirement_2_5_2", - "content": "After a provider's shutdown function has terminated successfully, the provider's state MUST revert to it's uninitialized state.", + "content": "After a provider's shutdown function has terminated successfully, the provider's state MUST revert to its uninitialized state.", "RFC 2119 keyword": "MUST", "children": [] }, diff --git a/specification/sections/02-providers.md b/specification/sections/02-providers.md index 6813e449..7aa9e558 100644 --- a/specification/sections/02-providers.md +++ b/specification/sections/02-providers.md @@ -255,9 +255,9 @@ class MyProvider implements Provider, AutoDisposable { #### Requirement 2.5.2 -> After a provider's shutdown function has terminated successfully, the provider's state **MUST** revert to it's uninitialized state. +> After a provider's shutdown function has terminated successfully, the provider's state **MUST** revert to its uninitialized state. -If a provider requires initialization, once it's shut down, it should transition to it's initial `NOT_READY` state, so it can be reinitialized. +If a provider requires initialization, once it's shut down, it should transition to its initial `NOT_READY` state, so it can be reinitialized. Providers not requiring initialization are assumed to be ready at all times. see: [initialization](#24-initialization) From 4cd7dd0566a3b2f79591fb21906d60aeb90da4db Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Wed, 15 Nov 2023 16:32:27 -0500 Subject: [PATCH 4/6] Update specification/sections/02-providers.md Signed-off-by: Todd Baert --- specification/sections/02-providers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/sections/02-providers.md b/specification/sections/02-providers.md index 7aa9e558..bd65e26b 100644 --- a/specification/sections/02-providers.md +++ b/specification/sections/02-providers.md @@ -257,7 +257,7 @@ class MyProvider implements Provider, AutoDisposable { > After a provider's shutdown function has terminated successfully, the provider's state **MUST** revert to its uninitialized state. -If a provider requires initialization, once it's shut down, it should transition to its initial `NOT_READY` state, so it can be reinitialized. +If a provider requires initialization, once it's shut down, it must transition to its initial `NOT_READY` state, so it can be reinitialized. Providers not requiring initialization are assumed to be ready at all times. see: [initialization](#24-initialization) From 960b32794dcbcfa1d9d2fc6dceb8fa4382608f07 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 20 Nov 2023 16:10:36 -0500 Subject: [PATCH 5/6] Update specification/sections/02-providers.md Signed-off-by: Todd Baert --- specification/sections/02-providers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/sections/02-providers.md b/specification/sections/02-providers.md index bd65e26b..5cd12de2 100644 --- a/specification/sections/02-providers.md +++ b/specification/sections/02-providers.md @@ -257,7 +257,7 @@ class MyProvider implements Provider, AutoDisposable { > After a provider's shutdown function has terminated successfully, the provider's state **MUST** revert to its uninitialized state. -If a provider requires initialization, once it's shut down, it must transition to its initial `NOT_READY` state, so it can be reinitialized. +If a provider requires initialization, once it's shut down, it must transition to its initial `NOT_READY` state. Some providers may allow re-initialization from this state. Providers not requiring initialization are assumed to be ready at all times. see: [initialization](#24-initialization) From d40e77452ceb6c30d1837315b15977166a3c2843 Mon Sep 17 00:00:00 2001 From: Todd Baert Date: Mon, 20 Nov 2023 16:11:16 -0500 Subject: [PATCH 6/6] Update specification/sections/02-providers.md Signed-off-by: Todd Baert --- specification/sections/02-providers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/sections/02-providers.md b/specification/sections/02-providers.md index 5cd12de2..46a29dd5 100644 --- a/specification/sections/02-providers.md +++ b/specification/sections/02-providers.md @@ -257,7 +257,7 @@ class MyProvider implements Provider, AutoDisposable { > After a provider's shutdown function has terminated successfully, the provider's state **MUST** revert to its uninitialized state. -If a provider requires initialization, once it's shut down, it must transition to its initial `NOT_READY` state. Some providers may allow re-initialization from this state. +If a provider requires initialization, once it's shut down, it must transition to its initial `NOT_READY` state. Some providers may allow reinitialization from this state. Providers not requiring initialization are assumed to be ready at all times. see: [initialization](#24-initialization)