osaf/libs/common/immsv/include/immsv_api.h | 1 +
osaf/services/saf/immsv/README | 46 ++++++++++++++++++++++++++---
osaf/services/saf/immsv/immnd/ImmModel.cc | 31 ++++++++++++++++++++
osaf/services/saf/immsv/immnd/ImmModel.hh | 1 +
osaf/services/saf/immsv/immnd/immnd_init.h | 1 +
5 files changed, 74 insertions(+), 6 deletions(-)
New message types and new server states have been added to the immsv
in OpenSAF 4.5. During upgrades from older OpenSAF releases to the
OpenSAF 4.5 release, usage of the new message types and new states would
cause problems for the mixed version cluster.
The OpensAF IMM uses the opensafImmNostdFlags in the imm service object:
'opensafImm=opensafImm,safApp=safImmService' for managing such transient
and special functionality. This changeset allocates bit 5 of the bitvector
for this purpose. See osaf/services/saf/immsv/README for details.
diff --git a/osaf/libs/common/immsv/include/immsv_api.h
b/osaf/libs/common/immsv/include/immsv_api.h
--- a/osaf/libs/common/immsv/include/immsv_api.h
+++ b/osaf/libs/common/immsv/include/immsv_api.h
@@ -119,6 +119,7 @@ extern "C" {
#define OPENSAF_IMM_FLAG_PRT41_ALLOW 0x00000002
#define OPENSAF_IMM_FLAG_PRT43_ALLOW 0x00000004
#define OPENSAF_IMM_FLAG_2PBE1_ALLOW 0x00000008
+#define OPENSAF_IMM_FLAG_PRT45_ALLOW 0x00000010
#define OPENSAF_IMM_SERVICE_NAME "safImmService"
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
@@ -1625,12 +1625,7 @@ has the meaning of 'flags-ON'. Operation
This flag needs to be turned ON when the upgrade to OpenSAF 4.3 has been
successfully completed. Thus in the final steps of the upgrade. A cluster
start/restart of an OpenSAF4.3 system will always automatically turn on
-this flag. In summary:
-
-Bit 1 controls schema (imm class) changes allowed or not.
-Bit 2 controls OpenSAF4.1 protocols allowed or not.
-Bit 3 controls OpenSAF4.3 protocols allowed or not.
-Bit 4 controls 2PBE oneSafe2PBE (see 2PBE feature in OpenSAF4.4 below).
+this flag.
2PBE Allow IMM PBE to be configured without shared file system (4.4)
===================================================================
@@ -1870,6 +1865,45 @@ Currently the default OI callback timeou
recommended to set an OI callback timeout to a value higher than 10 seconds,
since
that is the default om/oi-client side timeout for synchronous downcalls.
+
+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
+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
+nodes executing the old release may interfere with the extended state machine
for ccbs
+in new 4.5 nodes.
+
+Because of this upgrade issue, the older more restrictive behavior is still
enforced
+in OpenSAF 4.5 unless a flag is toggled on in the opensafImmNostdFlags runtime
+attribute in the object: opensafImm=opensafImm,safApp=safImmService.
+The following is the shell command:
+
+ immadm -o 1 -p opensafImmNostdFlags:SA_UINT32_T:16 \
+ opensafImm=opensafImm,safApp=safImmService
+
+This will set bit 5 of the 'opensafImmNostdFlags' runtime attribute inside the
immsv.
+Operation-id '1' invoked on the object:
+
+ 'opensafImm=opensafImm,safApp=safImmService'
+
+has the meaning of 'flags-ON'. Operation-id '2' has the meaning of 'flags-OFF'.
+This flag (and possibly other relevant flags) needs to be toggled ON when the
upgrade
+to OpenSAF 4.5 has been successfully completed. This would be in some final
step of
+the upgrade. Any cluster start/restart of an OpenSAF4.5 system will always
+automatically toggle on relevant flags.
+
+In summary:
+
+Bit 1 controls schema (imm class) changes allowed or not.
+Bit 2 controls OpenSAF4.1 protocols allowed or not.
+Bit 3 controls OpenSAF4.3 protocols allowed or not.
+Bit 4 controls 2PBE oneSafe2PBE (see 2PBE feature in OpenSAF4.4 above).
+Bit 5 controls OpenSAF4.5 protocols allowed or not.
+
+
----------------------------------------
DEPENDENCIES
============
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
@@ -890,6 +890,14 @@ immModel_oneSafe2PBEAllowed(IMMND_CB *cb
}
SaBoolT
+immModel_protocol45Allowed(IMMND_CB *cb)
+{
+ return (ImmModel::instance(&cb->immModel)->protocol45Allowed()) ?
+ SA_TRUE : SA_FALSE;
+}
+
+
+SaBoolT
immModel_purgeSyncRequest(IMMND_CB *cb, SaUint32T clientId)
{
return (ImmModel::instance(&cb->immModel)->purgeSyncRequest(clientId)) ?
@@ -3282,6 +3290,28 @@ ImmModel::protocol43Allowed()
}
bool
+ImmModel::protocol45Allowed()
+{
+ //TRACE_ENTER();
+ ObjectMap::iterator oi = sObjectMap.find(immObjectDn);
+ if(oi == sObjectMap.end()) {
+ TRACE_LEAVE();
+ return false;
+ }
+
+ ObjectInfo* immObject = oi->second;
+ ImmAttrValueMap::iterator avi =
+ immObject->mAttrValueMap.find(immAttrNostFlags);
+ osafassert(avi != immObject->mAttrValueMap.end());
+ osafassert(!(avi->second->isMultiValued()));
+ ImmAttrValue* valuep = avi->second;
+ unsigned int noStdFlags = valuep->getValue_int();
+
+ //TRACE_LEAVE();
+ return noStdFlags & OPENSAF_IMM_FLAG_PRT45_ALLOW;
+}
+
+bool
ImmModel::protocol41Allowed()
{
//TRACE_ENTER();
@@ -4078,6 +4108,7 @@ ImmModel::adminOwnerDelete(SaUint32T own
unsigned int noStdFlags = valuep->getValue_int();
noStdFlags |= OPENSAF_IMM_FLAG_PRT41_ALLOW;
noStdFlags |= OPENSAF_IMM_FLAG_PRT43_ALLOW;
+ noStdFlags |= OPENSAF_IMM_FLAG_PRT45_ALLOW;
valuep->setValue_int(noStdFlags);
LOG_NO("%s changed to: 0x%x", immAttrNostFlags.c_str(),
noStdFlags);
/* END Temporary code. */
diff --git a/osaf/services/saf/immsv/immnd/ImmModel.hh
b/osaf/services/saf/immsv/immnd/ImmModel.hh
--- a/osaf/services/saf/immsv/immnd/ImmModel.hh
+++ b/osaf/services/saf/immsv/immnd/ImmModel.hh
@@ -105,6 +105,7 @@ public:
bool schemaChangeAllowed();
bool protocol41Allowed();
bool protocol43Allowed();
+ bool protocol45Allowed();
bool oneSafe2PBEAllowed();
bool purgeSyncRequest(SaUint32T clientId);
bool verifySchemaChange(const std::string& className,
diff --git a/osaf/services/saf/immsv/immnd/immnd_init.h
b/osaf/services/saf/immsv/immnd/immnd_init.h
--- a/osaf/services/saf/immsv/immnd/immnd_init.h
+++ b/osaf/services/saf/immsv/immnd/immnd_init.h
@@ -293,6 +293,7 @@ extern "C" {
SaBoolT immModel_protocol41Allowed(IMMND_CB *cb);
SaBoolT immModel_protocol43Allowed(IMMND_CB *cb);
+ SaBoolT immModel_protocol45Allowed(IMMND_CB *cb);
SaBoolT immModel_oneSafe2PBEAllowed(IMMND_CB *cb);
SaBoolT immModel_purgeSyncRequest(IMMND_CB *cb, SaUint32T clientId);
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel