saAmfCSISetCallbackT(quiescing) response bug?
Hi all,
A non-SAF compilant problem found during debugging.
Refer to SAI-AIS-AMF-B.02.01 page 257 diagram, after component
receive saAmfCSISetCallbackT(quiescing) it will respond middleware
with saAmfResponse(ok) to indicate the callback is received. After
service quiescing is complete (which may take quite a while), component
will notify middleware with saAmfCSIQuiescingComplete to indicate
it enters quiesced state.
Openclovis seems to designed with the assumption that saAmfCSISetCallbackT(quiescing)
is respond only with saAmfCSIQuiescingComplete. So, if component invoke
saAmfResponse(ok) AND saAmfCSIQuiescingComplete after receive saAmfCSISetCallbackT(quiescing). saAmfCSIQuiescingComplete got dropped because cpmInvocationGet in _clAmsSACSIQuiescingComplete failed, thus problem occurs (eg. component don't get SaAmfComponentTerminateCallbackT when shutdown SU)
I might mis-interpreting the spec, can anyone throw light on this?
Thanks
Eddy

Hi Eddy,
You are interpreting the spec correct. The B.2.1 version of the spec requires that a component respond to a "csi quiescing request" with a "response" followed by a later "quiescing complete" indication. However, this clarification came in a later version of the spec and earlier versions only required that a component respond back with a "quiescing complete".
We have not made this behavioral change yet to comply with the latest version of the spec. We will do so, but for now we need to document this as a deviation.
Incidently, this change would have minimal real impact in the ASP implementation. The underlying transport is reliable RMD, so if a component did not receive the "callbacks" we would know about it. The "response" from the component serves mainly to acknowledge that the callback processing is complete. A "response" and a "quiescing complete" are possibly redundant.
Regards,
NV
Hi NV,
Thanks for the reply, see comments below.
NV >> We have not made this behavioral change yet to comply with the latest version of the spec. We will do so, but for now we need to document this as a deviation.
It may better to also mention: component conforming to SAF spec should be modified to not send response when receiving csi quiescing callback, or problems may occur (eg. csi quiescing complete timer timeout, component can't receive terminate callback when shutdown SU...)
NV >> Incidently, this change would have minimal real impact in the ASP implementation. The underlying transport is reliable RMD, so if a component did not receive the "callbacks" we would know about it. The "response" from the component serves mainly to acknowledge that the callback processing is complete. A "response" and a "quiescing complete" are possibly redundant.
_cpmComponentCSISet don't set CL_RMD_CALL_NEED_REPLY flag when call CL_CPM_CALL_RMD_ASYNC_NEW, so I doubt the current AMF server implementation can only rely on quiescingcomplete to make sure component received the callback. Thus AMF can't figure out whether component don't received the quiescing callback or component is stucking in the quiescing process when it doesn't receive quiescingcomplete.
Regards
Eddy