ack, code review only. One question, why is a non-configured 
saAmfSIPrefActiveAssignments set to 1, and not to
the value of saAmfSGNumPrefAssignedSUs? /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) &&
> +                     (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