osaf/services/saf/immsv/README            |  24 +++++++++++++++++++++---
 osaf/services/saf/immsv/immnd/ImmModel.cc |   2 +-
 2 files changed, 22 insertions(+), 4 deletions(-)


This enhancement removes the restriction of not allowing a class schema change
to add a default to an attribute definition. (Note: Removing a default is still
not allowed as it is inherrently not backwards compatible.)

Only new instances of the class will get the default assigned when no value is
provided for the attribute at object-create time.

Old instances with a null-value for the attribute will still have a null-value
for that attribute even after the schema change. A general rule for schema
changes is that the immsv never alters the value of existing attributes as
part of a schema change. Doing so would require the OI to be notified, which is
not realistic since the shcema change is not performed as a CCB.

This feature is only functional after an upgrade to 4.5 has completed.

diff --git a/osaf/services/saf/immsv/README b/osaf/services/saf/immsv/README
--- a/osaf/services/saf/immsv/README
+++ b/osaf/services/saf/immsv/README
@@ -484,6 +484,10 @@ CHANGE of an existing attribute if it is
      New instances of the class will get the new default,
      old instances retain the old value.
 
+   * Adding default-value for an attribute (config or runtime).
+     New instances of the class will get the new default,
+     old instances retain the null value.
+
    * Adding 'multivalued' flag for an attribute (config or runtime).
 
    * Adding 'writable' flag for an attribute (config).
@@ -494,7 +498,7 @@ CHANGE of an existing attribute if it is
 
 
 All other changes, such as change of attribute type, removal of default,
-addition of default, etc are not allowed.
+etc are not allowed.
 
 There is no API change. The existing saImmOmClassCreate_2 call is used
 to insert the new class version. The standard behavior is to reject
@@ -1842,7 +1846,6 @@ not to create deadlock cycles between th
 be resolved by the timeout of the synchronous admin-ops, so the problem would 
be lack
 of progress on some task, not a permanently hung set of processes.
 
-
 Attribute 'longDnsAllowed' added to class 'OpensafImm' (4.5)
 ===========================================================
 https://sourceforge.net/p/opensaf/tickets/897
@@ -1869,10 +1872,25 @@ The xml file should be used for upgradin
 upgraded to OpenSAF 4.5 and that system must be capable of supporting long DNs.
 
 
+Allow schema change to add attribute default (4.5)
+==================================================
+https://sourceforge.net/p/opensaf/tickets/895
+
+The restriction of not allowing a default value to be added to an attribute 
that
+previously had no default, has been removed. Only new instances of the class 
will
+get the default assigned when no value is provided for the attribute at 
object-create
+time. Old instances with a null-value for the attribute will still have a 
null-value
+for that attribute even after the schema change. A general rule for schema 
changes
+is that the immsv never alters the value of existing attributes as part of a 
schema
+change. Doing so would require the OI to be notified, which is not realistic 
since
+the shcema change is not performed as a CCB.
+This new feature is only available after an upgrade to OpensAF 4.5 has 
completed. 
+
+
 Notes on upgrading from OpenSAF 4.[1,2,3,4] to OpenSAF 4.5
 ==========================================================
 Several enhancements in OpenSAF4.5 add new message types or add new imm server 
states
-for ccb handling (#798,  #799, #16). During a rolling upgrade from an earlier 
OpenSAF
+for ccb handling (#798,  #799, #16, #895). During a rolling upgrade from an 
earlier OpenSAF
 release to the 4.5 release there will be nodes executing the older release 
concurrently
 with nodes executing OpenSAF 4.5. Nodes executing the earlier release will not
 recognize new message types originating from nodes executing 4.5 and messages 
from
diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -3727,7 +3727,7 @@ ImmModel::notCompatibleAtt(const std::st
             }
         }
 
-        if(oldAttr->mDefaultValue.empty() && !newAttr->mDefaultValue.empty()) {
+        if(oldAttr->mDefaultValue.empty() && !newAttr->mDefaultValue.empty() 
&& !protocol45Allowed()) {
             LOG_NO("Impossible upgrade, attribute %s:%s adds default value",
                 className.c_str(), attName.c_str());
             return true;

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to