On 29-Oct-15 4:22 AM, Hans Nordebäck wrote:
> Hi Praveen,
>
> trying to understand the problem below, if N-way and
> saAmfSGMaxStandbySIsperSU = 1,
> and say there are 2 SUs and 2 SIs with the following assignments:
> SU1                       SU2
> Active Standby      Standby Active
> ^            ^               ^           ^
> |              |                |             |
> SI1          SI2           SI1         SI2
>
> wouldn't si-swap of any si would lead to paritally assigned due to
> saAmfSGMaxStandbySIsperSU = 1?
> If so amf is performing according to spec, and to correct this,
> saAmfSGMaxStandbySIsperSU has to be increased?


In the above example if si-swap is performed on any SI then it will lead 
to removal of quiesced state for the SI. From spec perspective, it is 
fine. But this SI is now without standby assignment (without redundancy) 
and any fault can lead to complete service outage.
In this way rejection of operation is forcing the user to 
reconfigure/modify saAmfSGMaxStandbySIsperSU.

If multiple standby are present for an SI, then si-swap will not be 
rejected as there are standbys to take the active role.

Thanks
Praveen
>
> /Thanks HansN
>
> On 10/13/2015 11:29 AM, [email protected] wrote:
>>   osaf/services/saf/amf/amfd/sg_nway_fsm.cc |  13 +++++++++++++
>>   1 files changed, 13 insertions(+), 0 deletions(-)
>>
>> In the given configuration, swapped SI2 was fully assigned in the
>> beginning
>> but it had only one standby assignment. When SI-SWAP operation was
>> performed
>> on the SI, it caused removal of quiesced state after standby took the
>> active
>> role.
>>
>> In N-Way model a SI will have multiple standby assignments, so even if
>> swap leads
>> to removal of one standby there would be other standby SUs to take
>> over the active role.
>> So, I think, a general check for checking saAmfSGMaxStandbySIsperSU
>> count for
>> highest ranked SU is not needed and operation should be allowed if
>> there are
>> more than two standbys SUs exist for the SI and it will lead to
>> removal of
>> assignment after swap. A check can be added in a case where SI got
>> reduced
>> (by configuration or due to degraded state of the system) to 2N type
>> of redundancy
>> and operation will leave SI with only active state by removing the
>> quiesced state.
>>
>> Patch rejects si-swap if there is only one standby assignment for SI and
>> si-swap will lead to removal of quiesced assignment becuase of
>> saAmfSGMaxStandbySIsperSU constraint.
>>
>> diff --git a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
>> b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
>> --- a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
>> +++ b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc
>> @@ -3589,6 +3589,19 @@ SaAisErrorT SG_NWAY::si_swap(AVD_SI *si,
>>           rc = SA_AIS_ERR_BAD_OPERATION;
>>           goto done;
>>       }
>> +    /*
>> +       Reject si-swap if there is only one standby assignment for SI and
>> +       si-swap will lead to removal of quiesced assignment becuase of
>> +       saAmfSGMaxStandbySIsperSU constraint.
>> +     */
>> +    if ((si->curr_standby_assignments() == 1) &&
>> +        (si->sg_of_si->saAmfSGMaxStandbySIsperSU <
>> +
>> static_cast<SaUint32T>(actv_susi->su->hastate_assignments_count(SA_AMF_HA_STANDBY)+1)))
>> {
>> +        LOG_NO("%s SWAP not allowed as it will leave SI without
>> standby assignment.",
>> +                si->name.value);
>> +        rc = SA_AIS_ERR_BAD_OPERATION;
>> +        goto done;
>> +    }
>>       if ((avd_sg_nway_siswitch_func(avd_cb, si)) == NCSCC_RC_FAILURE) {
>>           rc = SA_AIS_ERR_BAD_OPERATION;
>>           goto done;
>

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

Reply via email to