Hi Alex,
Ack (test only). Thanks, Quyen From: Jones, Alex <ajo...@rbbn.com> Sent: Friday, September 13, 2019 12:53 AM To: hans.nordeb...@ericsson.com; gary....@dektech.com.au; quyen....@dektech.com.au Cc: opensaf-devel@lists.sourceforge.net; Jones, Alex <ajo...@rbbn.com> Subject: [PATCH 1/1] amfd: fix key tuple for sirankedsu db [#3076] Higher ranked SUs are not always picked. The tuple key has su name first, then si name, then rank. This is wrong. Su name should be last, as we want to sort by si name and rank before sorting by su name. Make su name last in the tuple key. --- src/amf/amfd/sirankedsu.cc | 21 ++++++++++----------- src/amf/amfd/susi.h | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/amf/amfd/sirankedsu.cc b/src/amf/amfd/sirankedsu.cc index 76c381cc9..8680518db 100644 --- a/src/amf/amfd/sirankedsu.cc +++ b/src/amf/amfd/sirankedsu.cc @@ -44,7 +44,7 @@ static void avd_susi_namet_init(const std::string &object_name, static void avd_sirankedsu_db_add(AVD_SUS_PER_SI_RANK *sirankedsu) { unsigned int rc = sirankedsu_db->insert( - make_tuple(sirankedsu->su_name, sirankedsu->si_name, sirankedsu->su_rank), + make_tuple(sirankedsu->si_name, sirankedsu->su_rank, sirankedsu->su_name), sirankedsu); osafassert(rc == NCSCC_RC_SUCCESS); @@ -81,9 +81,9 @@ static AVD_SUS_PER_SI_RANK *avd_sirankedsu_create( ranked_su_per_si = new AVD_SUS_PER_SI_RANK(); - ranked_su_per_si->su_name = std::get<0>(key); - ranked_su_per_si->si_name = std::get<1>(key); - ranked_su_per_si->su_rank = std::get<2>(key); + ranked_su_per_si->si_name = std::get<0>(key); + ranked_su_per_si->su_rank = std::get<1>(key); + ranked_su_per_si->su_name = std::get<2>(key); return ranked_su_per_si; } @@ -132,10 +132,9 @@ static uint32_t avd_sirankedsu_delete(AVD_CL_CB *cb, AVD_SUS_PER_SI_RANK *ranked_su_per_si) { if (ranked_su_per_si == nullptr) return NCSCC_RC_FAILURE; - sirankedsu_db->erase(make_tuple(ranked_su_per_si->su_name, - ranked_su_per_si->si_name, - ranked_su_per_si->su_rank)); - + sirankedsu_db->erase(make_tuple(ranked_su_per_si->si_name, + ranked_su_per_si->su_rank, + ranked_su_per_si->su_name)); delete ranked_su_per_si; return NCSCC_RC_SUCCESS; } @@ -166,7 +165,7 @@ static AVD_SUS_PER_SI_RANK *avd_sirankedsu_ccb_apply_create_hdlr( avd_susi_namet_init(Amf::to_string(dn), su_name, si_name); /* Find the avd_sus_per_si_rank name. */ - SiRankedSuKey key{make_tuple(su_name, si_name, rank)}; + SiRankedSuKey key{make_tuple(si_name, rank, su_name)}; AVD_SUS_PER_SI_RANK *avd_sus_per_si_rank = avd_sirankedsu_create(avd_cb, key); @@ -286,7 +285,7 @@ static int is_config_valid(const std::string &dn, return 0; } - SiRankedSuKey key{make_tuple(su_name, si_name, rank)}; + SiRankedSuKey key{make_tuple(si_name, rank, su_name)}; if ((avd_sirankedsu_find(avd_cb, key)) != nullptr) { if (opdata != nullptr) { @@ -543,7 +542,7 @@ SaAisErrorT avd_sirankedsu_config_get(const std::string &si_name, AVD_SI *si) { std::string su_name, dummy; avd_susi_namet_init(Amf::to_string(&dn), su_name, dummy); - SiRankedSuKey key{make_tuple(su_name, si_name, su_rank)}; + SiRankedSuKey key{make_tuple(si_name, su_rank, su_name)}; if ((avd_sirankedsu = avd_sirankedsu_find(avd_cb, key)) == nullptr) { if ((avd_sirankedsu = avd_sirankedsu_ccb_apply_create_hdlr( diff --git a/src/amf/amfd/susi.h b/src/amf/amfd/susi.h index afc4a8b48..f64a81cbb 100644 --- a/src/amf/amfd/susi.h +++ b/src/amf/amfd/susi.h @@ -89,7 +89,7 @@ typedef struct avd_sus_per_si_rank_tag { } AVD_SUS_PER_SI_RANK; -typedef std::tuple<std::string /*su*/, std::string /*si*/, uint32_t /*rank*/> +typedef std::tuple<std::string /*si*/, uint32_t /*rank*/, std::string /*su*/> SiRankedSuKey; typedef AmfDb<SiRankedSuKey, AVD_SUS_PER_SI_RANK> SiRankedSuDb; -- 2.20.1 _____ Notice: This e-mail together with any attachments may contain information of Ribbon Communications Inc. that is confidential and/or proprietary for the sole use of the intended recipient. Any review, disclosure, reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please notify the sender immediately and then delete all copies, including any attachments. _____ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel