Hi Praveen,

thanks, but my question was related to the if statement in the patch 
below, see inline/Thanks HansN
On 12/04/2014 09:34 AM, praveen malviya wrote:
>
>
> On 03-Dec-14 5:48 PM, Hans Nordebäck wrote:
>> ack, code review only. One question, why is a non-configured
>> saAmfSIPrefActiveAssignments set to 1, and not to
>> the value of saAmfSGNumPrefAssignedSUs?
>
> In section 8.11 SI class diagram says that non configured value of 
> saAmfSIPrefActiveAssignments is 1. But spec redefines it to 
> aAmfSGNumPrefAssignedSUs in section 3.6.5.3.
> We are keeping the default value 1 in when SI is being created.
> When assignments are going on saAmfSGNumPrefAssignedSUs will be used if
> saAmfSIPrefActiveAssignments is not configured.
>
> Thanks,
> Praveen
>
>  /Regards HansN
>>
>> On 12/03/2014 12:37 PM, praveen.malv...@oracle.com wrote:
>>> osaf/services/saf/amf/amfd/include/ckpt.h    |   3 ++-
>>>   osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc |  12 ++++++++++++
>>>   osaf/services/saf/amf/amfd/si.cc             |   9 +++++----
>>>   3 files changed, 19 insertions(+), 5 deletions(-)
>>>
>>>
>>> Note:Please apply this patch on top of already floated patch for #1190.
>>>
>>> A patch is floated on opensaf-devel for fixing the default value of
>>> saAmfSIPrefActiveAssignments against #1190.
>>> Floated patch had following problems:
>>> 1)If a configuration sets saAmfSIPrefActiveAssignments =
>>> saAmfSGNumPrefAssignedSUs.
>>> In this case SI will be marked Fully Assigned as soon as it is
>>> assigned to first SU
>>> and other SUs are still in lock-in state.
>>>
>>> 2)If peer AMFD is with old version than old AMFD will asset in some
>>> cases like:
>>>     a)configuration: 3 SUs in nway active SG with following params
>>>     saAmfSGNumPrefInserviceSUs=3,
>>>     saAmfSGNumPrefAssignedSUs=3, and
>>>     saAmfSIPrefActiveAssignments=1.
>>>
>>>     b)Bring SC-1 with this patch and SC-2 without this patch.
>>>        Unlock-in and unlock all the SUs.
>>>     c)controller swap.
>>>     d) lock SU3. AMFD will crash.
>>>       si.cc:1260: update_ass_state: Assertion
>>>     'saAmfSINumCurrActiveAssignments <= saAmfSIPrefActiveAssignments'
>>> failed.
>>>
>>>     This is because SC-1 had check pointed
>>> saAmfSINumCurrActiveAssignments
>>>     =3 which is not accordance with old amfd.
>>>
>>> 3)If user himself wants to configure saAmfSIPrefActiveAssignments=1.
>>> AMF cannot distinguish if value 1 is set by the user or it is the
>>> default value given by IMM.
>>> This is AMF schema related issue and AMF PR doc needs to be updated
>>> for this.
>>>
>>> Patch fixes the problem by incrementing the AVD_MBCSV_SUB_PART_VERSION
>>> and
>>> adjusting saAmfSIPrefActiveAssignments using peer amfd version.
>>>
>>> Since AMFD version is being upgraded, this ticket needs to be pushed as
>>> enhancement.
>>>
>>> diff --git a/osaf/services/saf/amf/amfd/include/ckpt.h
>>> b/osaf/services/saf/amf/amfd/include/ckpt.h
>>> --- a/osaf/services/saf/amf/amfd/include/ckpt.h
>>> +++ b/osaf/services/saf/amf/amfd/include/ckpt.h
>>> @@ -34,9 +34,10 @@
>>>   #define AVD_CKP_H
>>>   // current version
>>> -#define AVD_MBCSV_SUB_PART_VERSION      6
>>> +#define AVD_MBCSV_SUB_PART_VERSION      7
>>>   // supported versions
>>> +#define AVD_MBCSV_SUB_PART_VERSION_7    7
>>>   #define AVD_MBCSV_SUB_PART_VERSION_6    6
>>>   #define AVD_MBCSV_SUB_PART_VERSION_5    5
>>>   #define AVD_MBCSV_SUB_PART_VERSION_4    4
>>> diff --git a/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
>>> b/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
>>> --- a/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
>>> +++ b/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc
>>> @@ -518,6 +518,18 @@ uint32_t SG_NACV::su_insvc(AVD_CL_CB *cb
>>>           return NCSCC_RC_SUCCESS;
>>>       }
>>> +    for (AVD_SI *si = su->sg_of_su->list_of_si; si != NULL; si =
>>> si->sg_list_of_si_next) {
>>> +        if ((si->saAmfSIPrefActiveAssignments == 1) &&
>>> +                (avd_cb->avd_peer_ver <=
>>> AVD_MBCSV_SUB_PART_VERSION_6)  &&
>>> +                (si->saAmfSIPrefActiveAssignments <
>>> si->saAmfSINumCurrActiveAssignments)) {
>>> +            si->saAmfSIPrefActiveAssignments =
>>> si->saAmfSINumCurrActiveAssignments;
>>> +            si->adjust_si_assignments(1);
>>> +            si->saAmfSIPrefActiveAssignments = 1;
>>> +        }
>>> +    }
>>> +    if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE)
>>> +        return NCSCC_RC_SUCCESS;
>>> +
>>>       if (avd_sg_nacvred_su_chose_asgn(cb, su->sg_of_su) == NULL) {
>>>           avd_sg_app_su_inst_func(cb, su->sg_of_su);
>>>           if (AVD_SG_FSM_STABLE == su->sg_of_su->sg_fsm_state) {
>>> diff --git a/osaf/services/saf/amf/amfd/si.cc
>>> b/osaf/services/saf/amf/amfd/si.cc
>>> --- a/osaf/services/saf/amf/amfd/si.cc
>>> +++ b/osaf/services/saf/amf/amfd/si.cc
>>> @@ -1260,8 +1260,7 @@ void AVD_SI::update_ass_state()
>>>               osafassert(saAmfSINumCurrActiveAssignments <=
>>> pref_active_assignments());
>>>               // TODO sg-num_pref_assigned_sus() should return number
>>> of in-service
>>>               // SUs then the second statement can be removed!
>>> -            if ((saAmfSINumCurrActiveAssignments ==
>>> pref_active_assignments()) ||
>>> -                (pref_active_assignments() ==
>>> sg_of_si->num_pref_assigned_sus()))
>>> +            if (saAmfSINumCurrActiveAssignments ==
>>> pref_active_assignments())
>>>                   newState = SA_AMF_ASSIGNMENT_FULLY_ASSIGNED;
>>>               else
>>>                   newState = SA_AMF_ASSIGNMENT_PARTIALLY_ASSIGNED;
>>> @@ -1408,10 +1407,12 @@ void AVD_SI::set_si_switch(AVD_CL_CB *cb
>>>   uint32_t AVD_SI::pref_active_assignments() const
>>>   {
>>> -    if (saAmfSIPrefActiveAssignments == 1) {
>>> +    if ((saAmfSIPrefActiveAssignments == 1) &&
[HansN] what does == 1 mean here?
>>> +            (avd_cb->avd_peer_ver > AVD_MBCSV_SUB_PART_VERSION_6)) {
>>> +        TRACE("Peer AVD has higher AVD_MBCSV_SUB_PART_VERSION than
>>> AVD_MBCSV_SUB_PART_VERSION_6");
>>>           // Default value: the preferred number of assigned service
>>> units.
>>>           return sg_of_si->num_pref_assigned_sus();
>>> -    } else
>>> +    } else
>>>           return saAmfSIPrefActiveAssignments;
>>>   }
>>



------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to