Hi Vu, Reviewed the code. Ack from me.
Thanks, Zoran -----Original Message----- From: Vu Minh Nguyen [mailto:vu.m.ngu...@dektech.com.au] Sent: den 24 oktober 2017 09:58 To: Hans Nordebäck <hans.nordeb...@ericsson.com>; Zoran Milinkovic <zoran.milinko...@ericsson.com>; Anders Widell <anders.wid...@ericsson.com> Cc: opensaf-devel@lists.sourceforge.net; Vu Minh Nguyen <vu.m.ngu...@dektech.com.au> Subject: [PATCH 1/1] clm: fix return wrong error code [#2652] saClmClusterNodeGet_4() and saClmClusterNodeGetAsync() returns SA_AIS_ERR_UNAVAILABLE(31) when querying non-member node information from a member node. According to AIS, they should return SA_AIS_ERR_NOT_EXIST. SA_AIS_ERR_UNAVAILABLE should be returned when invoking process is not executing on a member node. --- src/clm/clmd/clms_evt.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/clm/clmd/clms_evt.c b/src/clm/clmd/clms_evt.c index 8352af8..4d7010d 100644 --- a/src/clm/clmd/clms_evt.c +++ b/src/clm/clmd/clms_evt.c @@ -1492,13 +1492,20 @@ static uint32_t proc_node_get_msg(CLMS_CB *cb, CLMSV_CLMS_EVT *evt) .bootTimestamp = node->boot_time; clm_msg.info.api_resp_info.param.node_get .initialViewNumber = node->init_view; - } else { + } else if (local_node->member == SA_FALSE) { clm_msg.evt_type = CLMSV_CLMS_TO_CLMA_API_RESP_MSG; clm_msg.info.api_resp_info.type = CLMSV_NODE_GET_RESP; clm_msg.info.api_resp_info.rc = SA_AIS_ERR_UNAVAILABLE; + } else { + clm_msg.evt_type = + CLMSV_CLMS_TO_CLMA_API_RESP_MSG; + clm_msg.info.api_resp_info.type = + CLMSV_NODE_GET_RESP; + clm_msg.info.api_resp_info.rc = + SA_AIS_ERR_NOT_EXIST; } } else { clm_msg.evt_type = CLMSV_CLMS_TO_CLMA_API_RESP_MSG; @@ -1508,7 +1515,7 @@ static uint32_t proc_node_get_msg(CLMS_CB *cb, CLMSV_CLMS_EVT *evt) } else { clm_msg.evt_type = CLMSV_CLMS_TO_CLMA_API_RESP_MSG; clm_msg.info.api_resp_info.type = CLMSV_NODE_GET_RESP; - clm_msg.info.api_resp_info.rc = SA_AIS_ERR_NOT_EXIST; + clm_msg.info.api_resp_info.rc = SA_AIS_ERR_UNAVAILABLE; } TRACE_LEAVE(); @@ -1573,6 +1580,16 @@ static uint32_t proc_node_get_async_msg(CLMS_CB *cb, CLMSV_CLMS_EVT *evt) ais_rc; clm_msg.info.cbk_info.client_id = param->client_id; + } else if (local_node->member == SA_FALSE) { + clm_msg.evt_type = CLMSV_CLMS_TO_CLMA_CBK_MSG; + clm_msg.info.cbk_info.type = + CLMSV_NODE_ASYNC_GET_CBK; + clm_msg.info.cbk_info.param.node_get.inv = + param->inv; + clm_msg.info.cbk_info.param.node_get.err = + SA_AIS_ERR_UNAVAILABLE; + clm_msg.info.cbk_info.client_id = + param->client_id; } else { TRACE( "Node exists in the database but is non-member"); @@ -1582,7 +1599,7 @@ static uint32_t proc_node_get_async_msg(CLMS_CB *cb, CLMSV_CLMS_EVT *evt) clm_msg.info.cbk_info.param.node_get.inv = param->inv; clm_msg.info.cbk_info.param.node_get.err = - SA_AIS_ERR_UNAVAILABLE; + SA_AIS_ERR_NOT_EXIST; clm_msg.info.cbk_info.client_id = param->client_id; } @@ -1596,11 +1613,11 @@ static uint32_t proc_node_get_async_msg(CLMS_CB *cb, CLMSV_CLMS_EVT *evt) clm_msg.info.cbk_info.client_id = param->client_id; } } else { - TRACE("Node doesn't exist in the data base"); + TRACE("Invoking process is not in cluster membership"); clm_msg.evt_type = CLMSV_CLMS_TO_CLMA_CBK_MSG; clm_msg.info.cbk_info.type = CLMSV_NODE_ASYNC_GET_CBK; clm_msg.info.cbk_info.param.node_get.inv = param->inv; - clm_msg.info.cbk_info.param.node_get.err = SA_AIS_ERR_NOT_EXIST; + clm_msg.info.cbk_info.param.node_get.err = SA_AIS_ERR_UNAVAILABLE; clm_msg.info.cbk_info.client_id = param->client_id; } TRACE_LEAVE(); -- 1.9.1 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel