Ack

Thanks
-Nagu

> -----Original Message-----
> From: Praveen Malviya
> Sent: 04 February 2014 15:14
> To: [email protected]; Nagendra Kumar; [email protected]
> Cc: [email protected]
> Subject: [PATCH 1 of 1] amfnd : handle successful cleanup of assigned comp
> gracefully in shutdown phase [#767]
> 
>  osaf/services/saf/amf/amfnd/clc.cc |  26 ++++++++++++++++++++------
>  1 files changed, 20 insertions(+), 6 deletions(-)
> 
> 
> During opensaf shutdown AMFND removes the SIs from the SUs in the reverse
> order of their ranks.                   At component level this gets 
> translated as giving
> csi removal callback to the components with TARGET_ONE.
> Reported problem occurs when an assigned component faults while removal is
> going on other components.
> When AMFND gets cleanup success event, it sees it as if the component was
> faulted while handling removal
> callback and thus it tries to move CSIs and SIs assigned to this component to
> removed state. Since CSIs and       SIs were already in assigned state AMFND
> asserts for assigning state check.
> This patch ensures that during shutdown phase if an assigned component faults
> then AMFND should mark CSIs and SIs assigned if they were in assigning state.
> 
> diff --git a/osaf/services/saf/amf/amfnd/clc.cc
> b/osaf/services/saf/amf/amfnd/clc.cc
> --- a/osaf/services/saf/amf/amfnd/clc.cc
> +++ b/osaf/services/saf/amf/amfnd/clc.cc
> @@ -2038,12 +2038,26 @@ uint32_t avnd_comp_clc_terming_cleansucc
>                */
>               if (!comp->su->is_ncs && comp->csi_list.n_nodes > 0) {
>                       AVND_COMP_CSI_REC *csi;
> -                     int csis_removed = 0; // for sanity checking number of
> loops
> -
> -                     while ((csi =
> m_AVND_CSI_REC_FROM_COMP_DLL_NODE_GET(m_NCS_DBLIST_FIND_FIRS
> T(&comp->csi_list))) != NULL) {
> -
>       m_AVND_COMP_CSI_CURR_ASSIGN_STATE_SET(csi,
> AVND_COMP_CSI_ASSIGN_STATE_REMOVED);
> -                             rc = avnd_comp_csi_remove_done(cb, comp,
> csi);
> -                             osafassert(++csis_removed < 1000);
> +
> +                     for (csi =
> m_AVND_CSI_REC_FROM_COMP_DLL_NODE_GET(m_NCS_DBLIST_FIND_FIRS
> T(&comp->csi_list));
> +                             csi;
> +                             csi =
> m_AVND_CSI_REC_FROM_COMP_DLL_NODE_GET(m_NCS_DBLIST_FIND_NEX
> T(&csi->comp_dll_node))) {
> +                             /* In shutdown phase SIs are removed
> honoring saAmfSIRank in reverse
> +                                order. A component which is having a CSI
> from a higher rank assigned
> +                                SI can fault while removal of lower rank SIs 
> is
> going on. In such
> +                                case CSIs of this component will be in
> assigned state only, so remove
> +                                done indication cannot be generated for
> assigned CSIs.
> +                              */
> +                             if
> (m_AVND_COMP_CSI_CURR_ASSIGN_STATE_IS_REMOVING(csi))
> +                                     rc =
> avnd_comp_csi_remove_done(cb, comp, csi);
> +
> +                             /* Removal of last CSI from this component
> may lead to SUSI assign/remove
> +                                done indication, which eventually deletes all
> COMP-CSI record.
> +                                In such a case there will not be any CSI in
> comp->csi_list, so come
> +                                out of the loop.
> +                              */
> +                             if (!comp->csi_list.n_nodes)
> +                                     break;
>                       }
>               }
> 

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to