Hi Vu, Ack.
I don't know exactly what this code is doing but I can see that the "fs_attr_iter != immObject->mAttrValueMap.end()" is done only when the operationId is 400 or 401 instead of always. The fs_attr_iter variable is only used with operationId 400 and 401 so this seems correct. I cannot see why the OPENSAF_IMM_FLAG_PRT51906_ALLOW is changed. Is this related to this problem? Please give information about this change in the commit message (and maybe as a comment in the ticket). Not tested. Thanks Lennart ________________________________ Från: Vu Minh Nguyen <vu.m.ngu...@dektech.com.au> Skickat: den 17 april 2019 11:29 Till: Hans Nordebäck; Lennart Lund; Gary Lee Kopia: opensaf-devel@lists.sourceforge.net; Vu Minh Nguyen Ämne: [PATCH 1/1] imm: fix coredump on immnd during upgrade [#3030] The assertion about the existence of the new added attribute `saImmFileSystemStatus` should be done if the admOp ID is either 400 or 401. --- src/imm/common/immsv_api.h | 2 +- src/imm/config/immsv_classes.xml | 1 - src/imm/immnd/ImmModel.cc | 7 ++++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/imm/common/immsv_api.h b/src/imm/common/immsv_api.h index 3ab3892d1..c37a624ed 100644 --- a/src/imm/common/immsv_api.h +++ b/src/imm/common/immsv_api.h @@ -151,7 +151,7 @@ typedef enum { #define OPENSAF_IMM_FLAG_PRT50_ALLOW 0x00000080 #define OPENSAF_IMM_FLAG_PRT51_ALLOW 0x00000100 #define OPENSAF_IMM_FLAG_PRT51710_ALLOW 0x00000200 -#define OPENSAF_IMM_FLAG_PRT51906_ALLOW 0x00000800 +#define OPENSAF_IMM_FLAG_PRT51906_ALLOW 0x00000400 #define OPENSAF_IMM_SERVICE_NAME "safImmService" diff --git a/src/imm/config/immsv_classes.xml b/src/imm/config/immsv_classes.xml index c6f448e82..193ccd2e2 100644 --- a/src/imm/config/immsv_classes.xml +++ b/src/imm/config/immsv_classes.xml @@ -50,7 +50,6 @@ <name>saImmFileSystemStatus</name> <type>SA_UINT32_T</type> <category>SA_RUNTIME</category> - <category>SA_RUNTIME</category> <flag>SA_CACHED</flag> </attr> </class> diff --git a/src/imm/immnd/ImmModel.cc b/src/imm/immnd/ImmModel.cc index 2cf2649cf..1435690c0 100644 --- a/src/imm/immnd/ImmModel.cc +++ b/src/imm/immnd/ImmModel.cc @@ -13873,9 +13873,6 @@ SaAisErrorT ImmModel::admoImmMngtObject(const ImmsvOmAdminOperationInvoke* req, valuep = (ImmAttrValue*)avi->second; auto fs_attr_iter = immObject->mAttrValueMap.find(saImmFileSystemStatus); - osafassert(fs_attr_iter != immObject->mAttrValueMap.end()); - auto fs_attr_value = fs_attr_iter->second; - if (req->operationId == SA_IMM_ADMIN_EXPORT) { /* Standard */ err = SA_AIS_ERR_NOT_SUPPORTED; @@ -13900,11 +13897,15 @@ SaAisErrorT ImmModel::admoImmMngtObject(const ImmsvOmAdminOperationInvoke* req, } else if (req->operationId == SA_IMM_ADMIN_FS_AVAILABLE) { LOG_NO("Received: immadm -o %u safRdn=immManagement,safApp=safImmService", SA_IMM_ADMIN_FS_AVAILABLE); + osafassert(fs_attr_iter != immObject->mAttrValueMap.end()); + auto fs_attr_value = fs_attr_iter->second; sFileSystemAvailable = true; fs_attr_value->setValue_int(1); } else if (req->operationId == SA_IMM_ADMIN_FS_UNAVAILABLE) { LOG_NO("Received: immadm -o %u safRdn=immManagement,safApp=safImmService", SA_IMM_ADMIN_FS_UNAVAILABLE); + osafassert(fs_attr_iter != immObject->mAttrValueMap.end()); + auto fs_attr_value = fs_attr_iter->second; sFileSystemAvailable = false; fs_attr_value->setValue_int(0); } else { -- 2.19.2 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel