Hi Lennart,

The problem is happening when the IMM OI version is greater than A.2.16.
I tested with A.2.16 its working fine.

Test with A.2.16 and let me know the result.
If the tests are passing the IMM version for 
src/smf/smfd/SmfImmApplierHdl.h will be changed to A.2.16 before pushing 
the code.

Parallely, I will debug why it is failing for version greater than A.2.16.

Thanks,
Neel.

On 2017/04/24 06:31 PM, Lennart Lund wrote:
> Hi Neel,
>
> I have an idea how to fix the problem (2.).
> I will create an addition to your patch and test if it solves the problem. I 
> will send it to you if it works with our test
>
> /Lennart
>   
>> -----Original Message-----
>> From: Neelakanta Reddy [mailto:[email protected]]
>> Sent: den 24 april 2017 10:20
>> To: Lennart Lund <[email protected]>; Rafael Odzakow
>> <[email protected]>
>> Cc: [email protected]
>> Subject: Re: [PATCH 1/1] smf: updated the imm API vesrion to latest
>> supported [#2431]
>>
>> Hi Lennart,
>>
>> comments inline.
>>
>> On 2017/04/24 01:17 PM, Lennart Lund wrote:
>>> Hi Neel
>>>
>>> I have found two things:
>>> 1.
>>> You have changed SMF to use IMM minor version 17 but the IMM PR
>> document says that version 18 is the latest. Also the ticket says that SMF 
>> shall
>> be upgraded to use version 18.
>> The latest A.2.18 is for CLM integration, with IMM( as CLM Integration
>> is not happened in OpenSAF Fully).
>> so, used A,2,17 and will change to A.2.17 in ticket description.
>>> 2.
>>> I have a test that during campaign init state changes "longDnsAllowed"
>> setting to ON and then creates an object with a long name. With this patch
>> applied this is no longer working. SMF uses an IMM Applier to surveil the
>> "longDnsAllowed" attribute. With the patch applied it seems as if it takes
>> longer time for IMM to activate the applier callback that makes SMF aware of
>> that the setting has changed resulting in a "too long name" fail when SMF
>> tries to create the object. I will do some more investigations
>> changing IMM version to A.2.17 should not cause any delays, I will also
>> test the longdn related cases.
>>
>> Thanks,
>> Neel.
>>> Thanks
>>> Lennart
>>>
>>>> -----Original Message-----
>>>> From: Neelakanta Reddy [mailto:[email protected]]
>>>> Sent: den 20 april 2017 12:59
>>>> To: Rafael Odzakow <[email protected]>; Lennart Lund
>>>> <[email protected]>
>>>> Cc: [email protected]; Neelakanta Reddy
>>>> <[email protected]>
>>>> Subject: [PATCH 1/1] smf: updated the imm API vesrion to latest
>> supported
>>>> [#2431]
>>>>
>>>> ---
>>>>    src/smf/smfd/SmfCampaignThread.cc  |  2 +-
>>>>    src/smf/smfd/SmfExecControlHdl.h   |  2 +-
>>>>    src/smf/smfd/SmfImmApplierHdl.h    |  2 +-
>>>>    src/smf/smfd/SmfImmOperation.cc    | 15 +++++++++------
>>>>    src/smf/smfd/SmfProcedureThread.cc |  2 +-
>>>>    src/smf/smfd/SmfUpgradeCampaign.cc |  2 ++
>>>>    src/smf/smfd/SmfUpgradeStep.h      |  2 +-
>>>>    src/smf/smfd/SmfUtils.cc           |  7 ++++---
>>>>    src/smf/smfd/smfd_campaign_oi.cc   |  2 +-
>>>>    src/smf/smfd/smfd_main.cc          |  2 +-
>>>>    10 files changed, 22 insertions(+), 16 deletions(-)
>>>>
>>>> diff --git a/src/smf/smfd/SmfCampaignThread.cc
>>>> b/src/smf/smfd/SmfCampaignThread.cc
>>>> index 413beb0..8f3d257 100644
>>>> --- a/src/smf/smfd/SmfCampaignThread.cc
>>>> +++ b/src/smf/smfd/SmfCampaignThread.cc
>>>> @@ -521,7 +521,7 @@ SaAisErrorT
>>>> SmfCampaignThread::createImmHandle(SmfCampaign *i_campaign) {
>>>>      TRACE_ENTER();
>>>>      SaAisErrorT rc = SA_AIS_OK;
>>>>      int existCnt = 0;
>>>> -  SaVersionT immVersion = {'A', 2, 1};
>>>> +  SaVersionT immVersion = {'A', 2, 17};
>>>>      SmfImmUtils immutil;
>>>>      SaImmAttrValuesT_2 **attributes;
>>>>      const char *campOiName = NULL;
>>>> diff --git a/src/smf/smfd/SmfExecControlHdl.h
>>>> b/src/smf/smfd/SmfExecControlHdl.h
>>>> index 3c3e8bc..8ba30a4 100644
>>>> --- a/src/smf/smfd/SmfExecControlHdl.h
>>>> +++ b/src/smf/smfd/SmfExecControlHdl.h
>>>> @@ -108,7 +108,7 @@ class SmfExecControlObjHandler {
>>>>      SaImmAttrValuesT_2 *m_nodesForSingleStep_ad;
>>>>
>>>>      // For storing IMM handles
>>>> -  const SaVersionT m_immVersion{'A', 2, 1};
>>>> +  const SaVersionT m_immVersion{'A', 2, 17};
>>>>      SaImmHandleT m_omHandle;
>>>>      SaImmAdminOwnerHandleT m_ownerHandle;
>>>>      SaImmCcbHandleT m_ccbHandle;
>>>> diff --git a/src/smf/smfd/SmfImmApplierHdl.h
>>>> b/src/smf/smfd/SmfImmApplierHdl.h
>>>> index 68ffa1c..7bd037c 100644
>>>> --- a/src/smf/smfd/SmfImmApplierHdl.h
>>>> +++ b/src/smf/smfd/SmfImmApplierHdl.h
>>>> @@ -98,7 +98,7 @@ class SmfImmApplierHdl {
>>>>      ExecuteImmCallbackReply ExecuteImmCallback(void);
>>>>
>>>>     private:
>>>> -  const SaVersionT kImmVersion = {'A', 2, 11};
>>>> +  const SaVersionT kImmVersion = {'A', 2, 17};
>>>>      static std::atomic<unsigned int> instance_number_;
>>>>      bool isCreated_;
>>>>      std::string applier_name_;
>>>> diff --git a/src/smf/smfd/SmfImmOperation.cc
>>>> b/src/smf/smfd/SmfImmOperation.cc
>>>> index 1dd44df..445455f 100644
>>>> --- a/src/smf/smfd/SmfImmOperation.cc
>>>> +++ b/src/smf/smfd/SmfImmOperation.cc
>>>> @@ -414,8 +414,9 @@ SaAisErrorT
>>>> SmfImmCreateOperation::execute(SmfRollbackData *o_rollbackData) {
>>>>          m_ccbHandle, (SaImmClassNameT)className, &objectName,
>>>>          (const SaImmAttrValuesT_2 **)m_immAttrValues);
>>>>      if (result != SA_AIS_OK && result == SA_AIS_ERR_FAILED_OPERATION)
>> {
>>>> -    result = saImmOmCcbGetErrorStrings(m_ccbHandle, &errStrings);
>>>> -    if (errStrings) {
>>>> +    SaAisErrorT result1 = SA_AIS_OK;
>>>> +    result1 = saImmOmCcbGetErrorStrings(m_ccbHandle, &errStrings);
>>>> +    if (result1 == SA_AIS_OK && errStrings) {
>>>>          TRACE("Received error string is %s", errStrings[0]);
>>>>          char *type = NULL;
>>>>          type = strstr(errStrings[0], "IMM: Resource abort: ");
>>>> @@ -651,8 +652,9 @@ SaAisErrorT
>>>> SmfImmDeleteOperation::execute(SmfRollbackData *o_rollbackData) {
>>>>      const SaStringT *errStrings = NULL;
>>>>      result = immutil_saImmOmCcbObjectDelete(m_ccbHandle,
>> &objectName);
>>>>      if (result != SA_AIS_OK && result == SA_AIS_ERR_FAILED_OPERATION)
>> {
>>>> -    result = saImmOmCcbGetErrorStrings(m_ccbHandle, &errStrings);
>>>> -    if (errStrings) {
>>>> +    SaAisErrorT result1 = SA_AIS_OK;
>>>> +    result1 = saImmOmCcbGetErrorStrings(m_ccbHandle, &errStrings);
>>>> +    if (result1 == SA_AIS_OK && errStrings) {
>>>>          TRACE("Received error string is %s", errStrings[0]);
>>>>          char *type = NULL;
>>>>          type = strstr(errStrings[0], "IMM: Resource abort: ");
>>>> @@ -1030,8 +1032,9 @@ SaAisErrorT
>>>> SmfImmModifyOperation::execute(SmfRollbackData *o_rollbackData) {
>>>>          m_ccbHandle, &objectName,
>>>>          (const SaImmAttrModificationT_2 **)m_immAttrMods);
>>>>      if (result != SA_AIS_OK && result == SA_AIS_ERR_FAILED_OPERATION)
>> {
>>>> -    result = saImmOmCcbGetErrorStrings(m_ccbHandle, &errStrings);
>>>> -    if (errStrings) {
>>>> +    SaAisErrorT result1 = SA_AIS_OK;
>>>> +    result1 = saImmOmCcbGetErrorStrings(m_ccbHandle, &errStrings);
>>>> +    if (result1 == SA_AIS_OK && errStrings) {
>>>>          TRACE("Received error string is %s", errStrings[0]);
>>>>          char *type = strstr(errStrings[0], "IMM: Resource abort: ");
>>>>          if (type != NULL) {
>>>> diff --git a/src/smf/smfd/SmfProcedureThread.cc
>>>> b/src/smf/smfd/SmfProcedureThread.cc
>>>> index 269820b..023dc8e 100644
>>>> --- a/src/smf/smfd/SmfProcedureThread.cc
>>>> +++ b/src/smf/smfd/SmfProcedureThread.cc
>>>> @@ -179,7 +179,7 @@ SaAisErrorT
>>>> SmfProcedureThread::createImmHandle(void) {
>>>>      TRACE_ENTER();
>>>>      SaAisErrorT rc = SA_AIS_OK;
>>>>      int existCnt = 0;
>>>> -  SaVersionT immVersion = {'A', 2, 1};
>>>> +  SaVersionT immVersion = {'A', 2, 17};
>>>>
>>>>      // DN of the procedure
>>>>      const char *procName = m_procedure->getProcName().c_str();
>>>> diff --git a/src/smf/smfd/SmfUpgradeCampaign.cc
>>>> b/src/smf/smfd/SmfUpgradeCampaign.cc
>>>> index 396bf10..aa03eba 100644
>>>> --- a/src/smf/smfd/SmfUpgradeCampaign.cc
>>>> +++ b/src/smf/smfd/SmfUpgradeCampaign.cc
>>>> @@ -1040,6 +1040,8 @@ void
>>>> SmfUpgradeCampaign::resetMaintenanceState() {
>>>>           * with Resource abort in error string.
>>>>           */
>>>>          continue;
>>>> +    } else {
>>>> +       break;
>>>>        }
>>>>      }
>>>>      if (rc != SA_AIS_OK) {
>>>> diff --git a/src/smf/smfd/SmfUpgradeStep.h
>>>> b/src/smf/smfd/SmfUpgradeStep.h
>>>> index 4e741b7..72e5d97 100644
>>>> --- a/src/smf/smfd/SmfUpgradeStep.h
>>>> +++ b/src/smf/smfd/SmfUpgradeStep.h
>>>> @@ -895,7 +895,7 @@ class SmfAdminOperation {
>>>>      std::list<unitNameAndState> m_suList;
>>>>      std::list<unitNameAndState> m_nodeList;
>>>>
>>>> -  const SaVersionT m_immVersion{'A', 2, 1};
>>>> +  const SaVersionT m_immVersion{'A', 2, 17};
>>>>
>>>>      std::string m_nodeGroupParentDn;
>>>>
>>>> diff --git a/src/smf/smfd/SmfUtils.cc b/src/smf/smfd/SmfUtils.cc
>>>> index 7277fde..d2b4734 100644
>>>> --- a/src/smf/smfd/SmfUtils.cc
>>>> +++ b/src/smf/smfd/SmfUtils.cc
>>>> @@ -58,7 +58,7 @@
>>>>     *
>>>>
>> ==========================================================
>>>> ==============
>>>>     */
>>>>
>>>> -SaVersionT SmfImmUtils::s_immVersion = {'A', 2, 1};
>>>> +SaVersionT SmfImmUtils::s_immVersion = {'A', 2, 17};
>>>>
>>>>    /*
>>>>
>> ==========================================================
>>>> ==============
>>>>     *   FUNCTION PROTOTYPES
>>>> @@ -703,8 +703,9 @@ SaAisErrorT SmfImmUtils::doImmOperations(
>>>>      /* Apply the CCB */
>>>>      result = immutil_saImmOmCcbApply(immCcbHandle);
>>>>      if (result != SA_AIS_OK && result == SA_AIS_ERR_FAILED_OPERATION)
>> {
>>>> -    result = saImmOmCcbGetErrorStrings(immCcbHandle, &errStrings);
>>>> -    if (errStrings) {
>>>> +    SaAisErrorT result1 = SA_AIS_OK;
>>>> +    result1 = saImmOmCcbGetErrorStrings(immCcbHandle, &errStrings);
>>>> +    if (result1 == SA_AIS_OK && errStrings) {
>>>>          TRACE("Received error string is %s", errStrings[0]);
>>>>          char *type = NULL;
>>>>          type = strstr(errStrings[0], "IMM: Resource abort: ");
>>>> diff --git a/src/smf/smfd/smfd_campaign_oi.cc
>>>> b/src/smf/smfd/smfd_campaign_oi.cc
>>>> index f37f8ca..e559730 100644
>>>> --- a/src/smf/smfd/smfd_campaign_oi.cc
>>>> +++ b/src/smf/smfd/smfd_campaign_oi.cc
>>>> @@ -42,7 +42,7 @@
>>>>    #include "smf/smfd/SmfCbkUtil.h"
>>>>    #include "base/osaf_extended_name.h"
>>>>
>>>> -static SaVersionT immVersion = {'A', 2, 1};
>>>> +static SaVersionT immVersion = {'A', 2, 17};
>>>>    static const SaImmOiImplementerNameT implementerName =
>>>>        (SaImmOiImplementerNameT) "safSmfService";
>>>>
>>>> diff --git a/src/smf/smfd/smfd_main.cc b/src/smf/smfd/smfd_main.cc
>>>> index 2d66c1e..35b16ee 100644
>>>> --- a/src/smf/smfd/smfd_main.cc
>>>> +++ b/src/smf/smfd/smfd_main.cc
>>>> @@ -334,7 +334,7 @@ static void main_process(void) {
>>>>        initialized.
>>>>      */
>>>>      SaImmHandleT omHandle = 0;
>>>> -  SaVersionT immVersion = {'A', 2, 1};
>>>> +  SaVersionT immVersion = {'A', 2, 17};
>>>>      SaAisErrorT rc = immutil_saImmOmInitialize(&omHandle, NULL,
>>>> &immVersion);
>>>>      if (rc != SA_AIS_OK) {
>>>>        LOG_ER("immutil_saImmOmInitialize faild, rc=%s", saf_error(rc));
>>>> --
>>>> 1.9.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to