Hi Hans

Thanks, I think db_template.h only exists under amfd.

Thanks
Gary

On 18/11/15 20:13, Hans Nordebäck wrote:
> ack, code review only, one comment below. /Thanks HansN
>
> On 11/18/2015 04:36 AM, Gary Lee wrote:
>> osaf/services/saf/amf/amfnd/compdb.cc           |  15 +++++++++++----
>>   osaf/services/saf/amf/amfnd/include/avnd_util.h |   7 +++++++
>>   2 files changed, 18 insertions(+), 4 deletions(-)
>>
>>
>> An upgrade campaign may 'change' saAmfCompType of IMMND to the same
>> version, forcing comp->config_is_valid to be set to 0.
>>
>> If the nodes are not rebooted as part of the campaign,
>> and immnd is later restarted for whatever reason, the restart will 
>> fail as amfnd is trying to
>> refresh immnd's config when immnd is down.
>>
>> If no version change actually occurs, we don't need to touch 
>> config_is_valid.
>>
>> diff --git a/osaf/services/saf/amf/amfnd/compdb.cc 
>> b/osaf/services/saf/amf/amfnd/compdb.cc
>> --- a/osaf/services/saf/amf/amfnd/compdb.cc
>> +++ b/osaf/services/saf/amf/amfnd/compdb.cc
>> @@ -816,15 +816,22 @@
>>                   break;
>>               }
>>               case saAmfCompType_ID: {
>> -                comp->saAmfCompType = param->name_sec;
>>                   /*
>>                   ** Indicate that comp config is no longer valid and 
>> have to be
>>                   ** refreshed from IMM. We cannot refresh here since 
>> it is probably
>>                   ** not yet in IMM.
>>                   */
>> -                comp->config_is_valid = 0;
>> -                LOG_NO("saAmfCompType changed to '%s' for '%s'",
>> -                    comp->saAmfCompType.value, comp->name.value);
>> +                const std::string 
>> oldType(Amf::to_string(&comp->saAmfCompType));
>> +                if 
>> (oldType.compare(Amf::to_string(&param->name_sec)) != 0) {
>> +                    // only trigger a reload if the type has changed
>> +                    comp->saAmfCompType = param->name_sec;
>> +                    comp->config_is_valid = 0;
>> +                    LOG_NO("saAmfCompType changed to '%s' for '%s'",
>> +                        comp->saAmfCompType.value, comp->name.value);
>> +                } else {
>> +                    LOG_NO("saAmfCompType '%s' unchanged for '%s'",
>> +                        comp->saAmfCompType.value, comp->name.value);
>> +                }
>>                   break;
>>               }
>>               default:
>> diff --git a/osaf/services/saf/amf/amfnd/include/avnd_util.h 
>> b/osaf/services/saf/amf/amfnd/include/avnd_util.h
>> --- a/osaf/services/saf/amf/amfnd/include/avnd_util.h
>> +++ b/osaf/services/saf/amf/amfnd/include/avnd_util.h
>> @@ -37,6 +37,13 @@
>>   extern const char *presence_state[];
>>   extern const char *ha_state[];
> [HansN] the class Amf is already defined in db_template.h. Perhaps it 
> should be moved to avnd_util.h?
>> +class Amf {
>> +public:
>> +  static std::string to_string(const SaNameT *name) {
>> +          return std::string((char*)name->value, name->length);
>> +  }
>> +};
>> +
>>   void avnd_msg_content_free(struct avnd_cb_tag *, AVND_MSG *);
>>     uint32_t avnd_msg_copy(struct avnd_cb_tag *, AVND_MSG *, AVND_MSG 
>> *);
>


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to