Hi, Neel/Mathi/Ramesh, Can you please review the patch, it is getting timeout.
-AVM On 2/10/2016 9:16 AM, mahesh.va...@oracle.com wrote: > osaf/libs/agents/saf/clma/clma_api.c | 22 +++++++++++++++------- > osaf/libs/agents/saf/cpa/cpa_api.c | 21 +++++++++++++-------- > osaf/libs/agents/saf/imma/imma_om_api.c | 24 ++++++++++++++++++++---- > osaf/libs/core/include/mds_papi.h | 3 +++ > 4 files changed, 51 insertions(+), 19 deletions(-) > > > SAF API functions that take an explicit timeout parameter are currently > expect the user to always set this parameter to MIN timeout value. > > Now this patch implements support for the full range of timeout values > i.e. [0, SA_TIME_MAX] , > since the underlying POSIX functions do support them. > > And for the testing: need to done both the case when the timeout happens > and when it doesn't. > Following are the list of SAF API functions that take an explicit timeout > parameter : > > saImmOmAdminOperationInvoke() > saCkptCheckpointOpen() > saClmClusterNodeGet() > > diff --git a/osaf/libs/agents/saf/clma/clma_api.c > b/osaf/libs/agents/saf/clma/clma_api.c > --- a/osaf/libs/agents/saf/clma/clma_api.c > +++ b/osaf/libs/agents/saf/clma/clma_api.c > @@ -1246,18 +1246,26 @@ static SaAisErrorT clmaclusternodeget(Sa > } > > if (timeout < 0) { > - TRACE("Timeout value is negative"); > + TRACE("saClmClusterNodeGet:Timeout value is negative"); > rc = SA_AIS_ERR_INVALID_PARAM; > goto done; > - } > + } else if (timeout > ( SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND)) { > + /* Unfortunately the current MDS transport support only > uint32_t type variable (232-1) for timeout parameter , > + even though SAF APIS supports SaTimeT (SaInt64T) type > (263-1). > + So as work around currently if SAF API receives the higher > value then uint32_t (232-1) that it can hold , form now > + implicitly set to max MDS supported value (4294967295 * > 10000000) , which is already very large impractical value. > + > + In Future solution : `[ticket:#1658] mds : Opensf transport > should adopt the size of the > + timeout parameter from 32 bits to 64 bits` will resolve the > issue by matching both MDS transport and SAF API's > + */ > + TRACE_4("saClmClusterNodeGet: timeout > MDS_MAX_TIMEOUT setting > to MDS max timeout value:%llu, clmHandle:%llx", > + (SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND) , clmHandle); > + timeout = (SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND); > + } > > /* convert SaTimeT into tens of milli seconds */ > timeout = m_CLMA_CONVERT_SATIME_TEN_MILLI_SEC(timeout); > - if (timeout < CLM_API_MIN_TIMEOUT) { > - TRACE("timeout is LESS THAN 100ms"); > - rc = SA_AIS_ERR_TIMEOUT; > - goto done; > - } > + > /* Check Whether CLMS is up or not */ > if (!clma_cb.clms_up) { > TRACE("CLMS down"); > diff --git a/osaf/libs/agents/saf/cpa/cpa_api.c > b/osaf/libs/agents/saf/cpa/cpa_api.c > --- a/osaf/libs/agents/saf/cpa/cpa_api.c > +++ b/osaf/libs/agents/saf/cpa/cpa_api.c > @@ -893,7 +893,19 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH > SA_AIS_ERR_INVALID_PARAM, ckptHandle); > TRACE_LEAVE2("API return code = %u", rc); > return SA_AIS_ERR_INVALID_PARAM; > - } > + } else if (timeout > ( SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND)) { > + /* Unfortunately the current MDS transport support only > uint32_t type variable (232-1) for timeout parameter , > + even though SAF APIS supports SaTimeT (SaInt64T) type > (263-1). > + So as work around currently if SAF API receives the higher > value then uint32_t (232-1) that it can hold , form now > + implicitly set to max MDS supported value (4294967295 * > 10000000) , which is already very large impractical value. > + > + In Future solution : `[ticket:#1658] mds : Opensf transport > should adopt the size of the > + timeout parameter from 32 bits to 64 bits` will resolve the > issue by matching both MDS transport and SAF API's > + */ > + TRACE_4("Cpa CkptOpen: timeout > MDS_MAX_TIMEOUT setting to MDS > max timeout value:%llu,ckptHandle:%llx", > + (SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND) , ckptHandle); > + timeout = (SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND); > + } > > > /* Draft Validations */ > @@ -985,13 +997,6 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH > /* convert the timeout to 10 ms value and add it to the sync send > timeout */ > time_out = m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(timeout); > > - if (time_out < CPSV_WAIT_TIME) { > - rc = SA_AIS_ERR_TIMEOUT; > - TRACE_4("Cpa CkptOpen failed Api failed with return > value:%d,ckptHandle:%llx,timeout:%llu", > - rc, ckptHandle, timeout); > - goto mds_send_fail; > - } > - > evt.info.cpnd.info.openReq.timeout = timeout; > > /* Unlock before MDS Send */ > diff --git a/osaf/libs/agents/saf/imma/imma_om_api.c > b/osaf/libs/agents/saf/imma/imma_om_api.c > --- a/osaf/libs/agents/saf/imma/imma_om_api.c > +++ b/osaf/libs/agents/saf/imma/imma_om_api.c > @@ -3672,6 +3672,26 @@ static SaAisErrorT admin_op_invoke_commo > bool opNamePar = false; > TRACE_ENTER(); > > + if (timeout < 0 ) { > + TRACE_4("saImmOmAdminOperationInvoke: failed invalid timeout > return value:%d,immHandle:%llx", > + SA_AIS_ERR_INVALID_PARAM, immHandle); > + rc = SA_AIS_ERR_INVALID_PARAM; > + goto done; > + } else if (timeout > ( SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND)) { > + /* Unfortunately the current MDS transport support only > uint32_t type variable (232-1) for timeout parameter , > + even though SAF APIS supports SaTimeT (SaInt64T) type > (263-1). > + So as work around currently if SAF API receives the higher > value then uint32_t (232-1) that it can hold , form now > + implicitly set to max MDS supported value (4294967295 * > 10000000) , which is already very large impractical value. > + > + In Future solution : `[ticket:#1658] mds : Opensf transport > should adopt the size of the > + timeout parameter from 32 bits to 64 bits` will resolve the > issue by matching both MDS transport and SAF API's > + */ > + TRACE_4("saImmOmAdminOperationInvoke: timeout > MDS_MAX_TIMEOUT > setting to MDS max timeout value:%llu,immHandle:%llx", > + (SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND) , immHandle); > + timeout = (SA_TIME_ONE_MILLISECOND * > MDS_MAX_TIMEOUT_MILLISECOND); > + } > + > + > if (cb->sv_id == 0) { > TRACE_2("ERR_BAD_HANDLE: No initialized handle exists!"); > return SA_AIS_ERR_BAD_HANDLE; > @@ -3781,10 +3801,6 @@ static SaAisErrorT admin_op_invoke_commo > timeout */ > timeout = m_IMMSV_CONVERT_SATIME_TEN_MILLI_SEC(timeout); > > - if (timeout < NCS_SAF_MIN_ACCEPT_TIME) { > - timeout = IMMSV_WAIT_TIME; > - } > - > if((rc = imma_proc_increment_pending_reply(cl_node, true)) != > SA_AIS_OK) { > TRACE_4("ERR_LIBRARY: Overlapping use of IMM handle by multiple > threads"); > goto bad_sync; > diff --git a/osaf/libs/core/include/mds_papi.h > b/osaf/libs/core/include/mds_papi.h > --- a/osaf/libs/core/include/mds_papi.h > +++ b/osaf/libs/core/include/mds_papi.h > @@ -199,6 +199,9 @@ extern "C" { > > #define MDS_MAX_PROCESS_NAME_LEN (255 + 32) /* Process Name + PID No/Slot > info/Tipc reference */ > > + /*MDS takes timeout in 10 ms value for sync send() timeout */ > +#define MDS_MAX_TIMEOUT_MILLISECOND 42949672950 /*((2^32 -1 * 10) */ > + > /************************************************************************** > * SVC_NAME of Service : A well known name that a service > > ***************************************************************************/ > > ------------------------------------------------------------------------------ > Site24x7 APM Insight: Get Deep Visibility into Application Performance > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month > Monitor end-to-end web transactions and take corrective actions now > Troubleshoot faster and improve end-user experience. Signup Now! > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel