Please ignore this patch. It has one compilation problem. I will re float the correct one.
Thanks, Praveen On 29-May-14 3:48 PM, praveen.malv...@oracle.com wrote: > osaf/services/saf/amf/amfd/si_dep.cc | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > > During failover of dependent, if fault occurs in the SU receiving the active > assignment then AMF is assigning only some SIs and SG remains unstable. > > AMF performs failover of failed active SU1, first by sending active for > sponsor > SI to the standby SU2 and it updates si_dep_state of dependents as > FAIL_OVER_UNDER_PROGRESS. After successful fail-over of sponsor when AMF sends > active for first level dependents to SU2 and iit updates second level > dependents > to FAIL_OVER_UNDER_PROGRESS. Now if SU2 faults and then AMF deletes all the > SUSIs > in both the SUs. When one the SUs is enabled, AMF screens SIs to update SI dep > states of all the SIs before creating new SUSIs. Here > FAIL_OVER_UNDER_PROGRESS of > some second level dependents is not updated which causes assignment of them > before > their sposnors. This leads to assignment of few SIs only and leads to unstable > SG. > > Patch updates si_dep_state from FAIL_OVER_UNDER_PROGRESS to READY_TO_UNASSIGN > if one of the sponsors is unassigned. > > diff --git a/osaf/services/saf/amf/amfd/si_dep.cc > b/osaf/services/saf/amf/amfd/si_dep.cc > --- a/osaf/services/saf/amf/amfd/si_dep.cc > +++ b/osaf/services/saf/amf/amfd/si_dep.cc > @@ -2536,13 +2536,20 @@ void sidep_update_dependents_states(AVD_ > void sidep_update_si_self_dep_state(AVD_SI *si) > { > bool all_sponsors_assgnd = false; > + AVD_SPONS_SI_NODE *spons; > > TRACE_ENTER2("sponsor si:'%s'", si->name.value); > > /*Any dependent SI is never expcted in this state when screening is > going on. > In such situation do not update si_dep_state. It will be taken care > during failover*/ > if (si->si_dep_state == AVD_SI_FAILOVER_UNDER_PROGRESS) { > - TRACE("si:'%s', si_dep_state:%u", si->name.value, > si->si_dep_state); > + /*If atleast one sponsor is unassigned, unassign the dependent*/ > + for (spons = si->spons_si_list; spons; spons = spons->next) { > + if (spons_si->list_of_sisu == NULL) { > + avd_sidep_si_dep_state_set(si, > AVD_SI_READY_TO_UNASSIGN); > + goto done > + } > + } > goto done; > } > > > ------------------------------------------------------------------------------ > Time is money. Stop wasting it! Get your web API in 5 minutes. > www.restlet.com/download > http://p.sf.net/sfu/restlet > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ Time is money. Stop wasting it! Get your web API in 5 minutes. www.restlet.com/download http://p.sf.net/sfu/restlet _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel