RFC Errata
RFC 7950, "The YANG 1.1 Data Modeling Language", August 2016
Note: This RFC has been updated by RFC 8342, RFC 8526
Source of RFC: netmod (ops)
Errata ID: 6885
Status: Rejected
Type: Technical
Publication Format(s) : TEXT
Reported By: R Kaja Mohideen
Date Reported: 2022-03-16
Rejected by: Rob Wilton
Date Rejected: 2022-03-17
Section 11 says:
A definition in a published module may be revised in any of the following ways: o An "enumeration" type may have new enums added, provided the old enums's values do not change. Note that inserting a new enum before an existing enum or reordering existing enums will result in new values for the existing enums, unless they have explicit values assigned to them. o A "bits" type may have new bits added, provided the old bit positions do not change. Note that inserting a new bit before an existing bit or reordering existing bits will result in new positions for the existing bits, unless they have explicit positions assigned to them.
It should say:
See Notes.
Notes:
When server is exposing updated yang model as mentioned in Section 11, particularly with enums, bits having new items - client systems that are not updated to use the new yang module will not be able to recognize and use the new values.
This is problematic when there are multiple clients and those systems are getting updated to catch up with yang changes over time. Updated "Client A" recognizing new enum and using it (update datastore with new value using edit-config), will make, old/not-yet-updated "Client B" to encounter the new value (received as response of get-config) that it cannot work with.
So, the "backward compatible" ways of updating a yang module should consider "multiple clients" scenario and make recommendations in such a way that clients are not forced to update all at once.
--VERIFIER NOTES--
The document text accurately represents the consensus of the WG at the time that it was published. Hence, this errata is beyond the scope of what changes could be considered as part of the errata process, such a change would need to happen via a new or updated RFC.