diff --git a/keps/sig-storage/3762-persistent-volume-last-phase-transition-time/README.md b/keps/sig-storage/3762-persistent-volume-last-phase-transition-time/README.md index 40b9904912ee..06af575e91e5 100644 --- a/keps/sig-storage/3762-persistent-volume-last-phase-transition-time/README.md +++ b/keps/sig-storage/3762-persistent-volume-last-phase-transition-time/README.md @@ -266,6 +266,17 @@ Go in to as much detail as necessary here. This might be a good place to talk about core concepts and how they relate. --> +The caveat of this proposal is that admins might not see the effect immediately after enabling/disabling the feature gate. +This is due to how and when the new `LastPhaseTransitionTime` field needs to be added/removed. + +Adding the field to a PV is reasonable only when the PV actually transitions its phase - only at that point we can +capture meaningful timestamp. Trying to do this at any other step than phase transition would capture a timestamp +that would semantically incorrect and misleading. + +Removing the value can be done more freely, but tradeoffs need to be considered. One alternative approach discussed was +removing the field values more aggressively, during each PV sync. As this might introduce performance issues and does +not add much value the removal should be done during PV validation instead. + ### Risks and Mitigations -No. It only adds a new informative field to PV status. +Yes. All PVs will start to contain the new `LastPhaseTransitionTime` field. ###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)? @@ -603,7 +621,18 @@ Yes. This will result in the timestamp value being set to `nil`. Mentioned in "U ###### What happens if we reenable the feature if it was previously rolled back? -No issues expected, after rollback the field can be `nil` and validation should allow updates from `nil`. +No issues expected. There are three cases that can occur for a PV: + + 1. PV did not transition its phase when feature gate was enabled - the `LastPhaseTransitionTime` field was not added + to the PV object so this is the same case as enabling the feature gate for the first time. + 2. PV did transition its phase but the `LastPhaseTransitionTime` *was not* reset to `nil` because the PV was not + validated when the feature was enabled - the timestamp value will be updated on next phase change as if the feature + gate was never disabled. + 2. PV did transition its phase but the `LastPhaseTransitionTime` *was* reset to `nil` because the PV was validated at + least once already while feature was enabled - the timestamp value will be updated on next phase change because + updates from `nil` are allowed. + +See "Upgrade / Downgrade Strategy" and "Notes/Constraints/Caveats" sections for more details. ###### Are there any tests for feature enablement/disablement?